/* * Store student grades in an array, reading from an input data file. * Compute the average of the grades and find the number of grades * that are above average. * CISC105 07/11/2005 * average.5.c */ #include #define MAXGRADES 200 int main() { float runningSum = 0; int grade = 0, aboveAvg = 0; int numGrades = 0; float average; int grades[MAXGRADES]; int i; FILE *file_ptr; char input; file_ptr = fopen( "grades_nosent.txt", "r"); if( file_ptr == NULL ) { printf("Error opening 'grades_nosent.txt'\n"); exit(1); } fscanf( file_ptr, "%c", &input ); while( fscanf( file_ptr, "%d,", &grade ) != EOF ) { grades[numGrades] = grade; runningSum += grade; numGrades++; } /* print the saved grades */ printf("The saved grades:\n"); for( i=0; i < numGrades; i++ ) { printf("%d\n", grades[i]); } if( numGrades > 0 ) { average = runningSum/numGrades; printf("The average of %d grades is %.2f\n", numGrades, average); } else { // no point in doing anything else, so exit printf("No grades entered."); exit( 1 ); } /* * Compute the number of grades that are above average. */ for ( i=0; i < numGrades; i++ ) { if( grades[i] > average ) { aboveAvg++; } } printf("%d grades are above average.\n", aboveAvg ); return 0; }