home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / C-SSP.ARJ / TAB1.C < prev    next >
Encoding:
Text File  |  1984-08-10  |  1.5 KB  |  62 lines

  1.    tab1(no,a,ni,bl,bh,vmin,vmax,total,vmean,stdev,freq,iop)
  2.  
  3.       /* tabulate for a variable in an observation vector, the       */
  4.       /* frequency and percent frequency over given class intervals, */
  5.       /* in addition, calculate the total, average, standard         */
  6.       /* deviation, minimum and maximum.                             */
  7.  
  8.       int iop,no,ni;
  9.       float a[],bl,bh,*vmin,*vmax,*total,*vmean,*stdev,freq[];
  10.  
  11.    {
  12.       int i,j,nimi;
  13.       float che,sint,sos,t,tn,tno;
  14.       extern double fabs(),sqrt();
  15.  
  16.  
  17.       *vmin = 1.0e37;
  18.       *vmax = -1.0e37;
  19.  
  20.       for(i = 0; i <= no-1; i++)
  21.       {
  22.        if((a[i] - *vmin) < 0.) *vmin = a[i];
  23.        if((a[i] - *vmax) > 0.) *vmax = a[i];
  24.       }
  25.       tn = ni;
  26.       sint = fabs(bh - bl)/(tn - 2.0);
  27.  
  28.       for(i = 0; i <= ni-1; i++) freq[i] = 0.;
  29.  
  30.       *total = 0.;
  31.       sos = 0.;
  32.       nimi = ni - 1;
  33.  
  34.       for(i = 1; i <= no; i++)
  35.       {
  36.        che = bl;
  37.        for(j = 1; j <= nimi; j++)
  38.        {
  39.        if (a[i-1] < che) goto f10;
  40.        che = che + sint;
  41.        }
  42.       freq[ni-1] = freq[ni-1] + 1.;
  43.       goto f20;
  44. f10:  freq[j-1] = freq[j-1] + 1.;
  45. f20:  ;
  46.       }
  47.       tno = no;
  48.       if (iop == 2)
  49.       {
  50.        for(i = 0; i <= ni-1; i++)
  51.          freq[i] = freq[i] * 100.0 / tno;
  52.       }
  53.       for(i = 0; i <= no-1; i++)
  54.       {
  55.        *total = *total + a[i];
  56.        sos = sos + (a[i]*a[i]);
  57.       }
  58.       *vmean = *total/tno;
  59.       t = *total;
  60.       *stdev = sqrt((sos - t*t/tno)/(tno - 1.));
  61.    }
  62.