//DISPLAY 7.14 Two-Dimensional Array //Reads quiz scores for each student into the two-dimensional array grade (but //the input code is not shown in this display). Computes the average score //for each student and the average score for each quiz. Displays the quiz scores //and the averages. #include #include const int NUMBER_STUDENTS = 4, NUMBER_QUIZZES = 3; void compute_st_ave(const int grade[][NUMBER_QUIZZES], double st_ave[]); //Precondition: Global constants NUMBER_STUDENTS and NUMBER_QUIZZES //are the dimensions of the array grade. Each of the indexed variables //grade[st_num-1, quiz_num-1] contains the score for student st_num on quiz //quiz_num. //Postcondition: Each st_ave[st_num-1] contains the average for student //number stu_num. void compute_quiz_ave(const int grade[][NUMBER_QUIZZES], double quiz_ave[]); //Precondition: Global constants NUMBER_STUDENTS and NUMBER_QUIZZES //are the dimensions of the array grade. Each of the indexed variables //grade[st_num-1, quiz_num-1] contains the score for student st_num on quiz //quiz_num. //Postcondition: Each quiz_ave[quiz_num-1] contains the average for quiz number //quiz_num. void display(const int grade[][NUMBER_QUIZZES], const double st_ave[], const double quiz_ave[]); //Precondition: Global constants NUMBER_STUDENTS and NUMBER_QUIZZES are the //dimensions of the array grade. Each of the indexed variables grade[st_num-1, //quiz_num-1] contains the score for student st_num on quiz quiz_num. Each //st_ave[st_num-1] contains the average for student stu_num. Each //quiz_ave[quiz_num -1] contains the average for quiz number quiz_num. //Postcondition: All the data in grade, st_ave, and quiz_ave has been output. int main( ) { using namespace std; int grade[NUMBER_STUDENTS][NUMBER_QUIZZES]; double st_ave[NUMBER_STUDENTS]; double quiz_ave[NUMBER_QUIZZES]; //The code for filling the array grade goes here, but is not shown. compute_st_ave(grade, st_ave); compute_quiz_ave(grade, quiz_ave); display(grade, st_ave, quiz_ave); return 0; } void compute_st_ave(const int grade[][NUMBER_QUIZZES], double st_ave[]) { for (int st_num = 1; st_num <= NUMBER_STUDENTS; st_num++) {//Process one st_num: double sum = 0; for (int quiz_num = 1; quiz_num <= NUMBER_QUIZZES; quiz_num++) sum = sum + grade[st_num -1][quiz_num -1]; //sum contains the sum of the quiz scores for student number st_num. st_ave[st_num -1] = sum/NUMBER_QUIZZES; //Average for student st_num is the value of st_ave[st_num-1] } } void compute_quiz_ave(const int grade[][NUMBER_QUIZZES], double quiz_ave[]) { for (int quiz_num = 1; quiz_num <= NUMBER_QUIZZES; quiz_num++) {//Process one quiz (for all students): double sum = 0; for (int st_num = 1; st_num <= NUMBER_STUDENTS; st_num++) sum = sum + grade[st_num -1][quiz_num -1]; //sum contains the sum of all student scores on quiz number quiz_num. quiz_ave[quiz_num -1] = sum/NUMBER_STUDENTS; //Average for quiz quiz_num is the value of quiz_ave[quiz_num-1] } } //Uses iostream and iomanip: void display(const int grade[][NUMBER_QUIZZES], const double st_ave[], const double quiz_ave[]) { using namespace std; cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(1); cout << setw(10) << "Student" << setw(5) << "Ave" << setw(15) << "Quizzes\n"; for (int st_num = 1; st_num <= NUMBER_STUDENTS; st_num++) {//Display for one st_num: cout << setw(10) << st_num << setw(5) << st_ave[st_num-1] << " "; for (int quiz_num = 1; quiz_num <= NUMBER_QUIZZES; quiz_num++) cout << setw(5) << grade[st_num -1][quiz_num -1]; cout << endl; } cout << "Quiz averages = "; for (int quiz_num = 1; quiz_num <= NUMBER_QUIZZES; quiz_num++) cout << setw(5) << quiz_ave[quiz_num -1]; cout << endl; }