/* --------------------------------------------------------------------- ** Figure 10.12: Using parallel arrays. ** --------------------------------------------------------------------- */ #include "tools.h" #define MAX 16 void main( void ) { int k; /* Loop counter. */ int n; /* Number of students in class. */ long id[MAX]; /* Students' ID numbers. */ short midterm[MAX]; /* Midterm exam scores. */ short final[MAX]; /* Final exam scores. */ float average[MAX]; /* Average of exam scores. */ float avg_average; /* Average of averages. */ float diff; /* Student's average minus class average. */ banner(); printf( " Exam average = .45*midterm + .55*final.\n" " How many students are in the class? " ); scanf( "%i", &n ); if (n > MAX || n < 1) fatal( "Class size can't exceed %i.", MAX ); printf( " At each prompt, enter an ID# and two exam scores.\n" ); for (k = 0; k < n; ++k) { printf( "\t > "); scanf( "%li%hi%hi", &id[k], &midterm[k], &final[k] ); average[k] = .45 * midterm[k] + .55 * final[k]; } for (avg_average = 0, k = 0; k < n; ++k) avg_average += average[k]; avg_average /= n; printf( "\nAverage of the averages = %.2f\n", avg_average ); puts( "\nID num mid fin average +/- " ); puts( "---------------------------------- " ); for (k = 0; k < n; ++k) { diff = average[k] - avg_average; printf( "%li %5hi %5hi %8.1f %6.1f \n", id[k], midterm[k], final[k], average[k], diff ); } puts( "----------------------------------" ); bye(); }