
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define DATA_FILE "stats.dat"   /* Data file */

const int MAX_LEN= 256;   /* Used in getting input from user */
const int NO_DATA= 100;    /* No. of data items to read */

/* Alternative solution which is quicker but not quite as clear */


int main()
{
    int i;
    double data[NO_DATA];    /* Data to read from file */
    double sum, square_sum;  /* Keeps track of total so far and squares total */
    double mean, variance;   /* Mean and variance of data */
    char string [MAX_LEN];  /* String for user inputs */
    FILE *fptr;  
    
    
    sum= 0;
    square_sum= 0;
    fptr= fopen (DATA_FILE, "r");
    if (fptr == NULL) {
        fprintf (stderr, "Unable to open file for reading\n");
        return -1;
    }
    for (i= 0; i < NO_DATA; i++) {
        if (fgets (string, MAX_LEN, fptr) == NULL) {
            printf ("Unexpected end to data \n");
            fclose (fptr);
            return 0;
        }
        data[i]= atof(string);
        sum= sum+ data[i];
        square_sum= square_sum + (data[i]* data[i]);
        mean= sum/(i+1);
        if (i > 0) {
variance= (square_sum/(i+1) - mean*mean) * (double)(i+1)/(double)i;
        } else {
		variance= 0;
  }
  printf ("Read %f.  Mean %f.  Variance %f\n", data[i],
           mean, variance);
    } 
    fclose (fptr);
    return 0;
}



