/* * Store student grades in an array. * Compute the average of the grades. * Read in the grades from the file. * CISC105 07.11.05 * average.4.c */ #include #define SENTINEL -1 #define MAXGRADES 200 int main() { int x = 200; float runningSum = 0; int grade = 0; int numGrades = 0; float average; int grades[MAXGRADES]; int i; int aboveAvg = 0; FILE *file_ptr; file_ptr = fopen( "grades.txt", "r"); if( file_ptr == NULL ) { printf("Error opening 'grades.txt'\n"); exit(1); } fscanf( file_ptr, "%d", &grade ); while( grade != SENTINEL ) { grades[numGrades] = grade; runningSum += grade; numGrades++; // printf("Enter a grade or %d to compute the average: ", SENTINEL); fscanf(file_ptr, "%d", &grade); } /* print the saved grades */ 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 { 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; }