/***************************************************************************** Function: stats.c Description: reads its infile & reports some statistics Parameters: Return: *****************************************************************************/ #include #include #include #include #include #define MAXLINE 1000 int main(int argc, char *argv[]) { char buffer[MAXLINE+1]; char *nums="#.-0123456789"; char *bp; double x,max,min,mean,sum,ss,sstdev; unsigned long n=0; sum = ss = 0; while (!feof(stdin)) { if (fgets(buffer, MAXLINE,stdin)!= NULL ) { bp = strpbrk(buffer,nums); if (bp[0] != '#'){ x = atof(strpbrk(buffer,nums)); sum=sum+x; ss=ss+x*x; n=n+1; if (n==1){ max =min= x ; } else{ if (x>max)max=x; if (x 0) { mean = sum/n; if (n > 1) { sstdev = sqrt((ss-n*mean*mean)/(n-1)); } else { sstdev = DBL_MAX; } printf("n=%lu S=%g SS=%g Mi=%g Me=%g Ma=%g SDv=%g\n",\ n,sum,ss,min,mean,max,sstdev); } else { } return 0; }