Я пытаюсь скопировать программу из моего учебника. похоже, я все сделал правильно, за исключением одной вещи: я не могу понять, как инициализировать многомерный массив, который мне нужен, чтобы получить вывод, напечатанный в книге.
программа должна распечатать двумерный массив. один столбец - это идентификационный номер учащегося (от 1 до 4), другой столбец - их средняя оценка теста, и под заголовком «Викторины» есть три столбца, в которых перечислены все их индивидуальные оценки теста. когда я запускаю программу, я получаю кучу случайных чисел для результатов, и я думаю, что это потому, что я не понял, как собрать данные, которые мне нужны для этого примера.
книга не делала не дают код для заполнения этого массива, хотя он не предлагает каких-либо четких примеров того, как это сделать. Я проверил несколько примеров инициализации многомерного массива онлайн, но я не могу понять, как применить что-либо, что я прочитал, к этой конкретной c ситуации.
Заранее благодарю за любую информацию.
#include <iostream>
//necessary to use setw()
#include <iomanip>
using namespace std;
const int NUMBER_STUDENTS = 4, NUMBER_QUIZZES = 3;
void computeStAve(const int grade[][NUMBER_QUIZZES], double stAve[]);
void computeQuizAve(const int grade[][NUMBER_QUIZZES], double quizAve[]);
void display(const int grade[][NUMBER_QUIZZES], const double stAve[], const double quizAve[]);
int main() {
int grade[NUMBER_STUDENTS][NUMBER_QUIZZES];
//giving my own values for stAve[] and quizAve[]
double stAve[NUMBER_STUDENTS] = {0, 1, 2, 3};
double quizAve[NUMBER_QUIZZES] = {7.0, 5.0, 7.5};
computeStAve(grade, stAve);
computeQuizAve(grade, quizAve);
display(grade, stAve, quizAve);
return 0;
}
void computeStAve(const int grade[][NUMBER_QUIZZES], double stAve[]){
for (int stNum = 1; stNum <= NUMBER_STUDENTS; stNum++){
double sum = 0;
for (int quizNum = 1; quizNum <= NUMBER_QUIZZES; quizNum++){
sum = sum + grade[stNum - 1][quizNum - 1];
stAve[stNum - 1] = sum / NUMBER_QUIZZES;
}
}
}
void computeQuizAve(const int grade[][NUMBER_QUIZZES], double quizAve[]){
for (int quizNum = 1; quizNum <= NUMBER_QUIZZES; quizNum++){
double sum = 0;
for (int stNum = 1; stNum <= NUMBER_STUDENTS; stNum++){
sum = sum + grade[stNum - 1][quizNum - 1];
quizAve[quizNum - 1] = sum / NUMBER_STUDENTS;
}
}
}
void display(const int grade[][NUMBER_QUIZZES], const double stAve[], const double quizAve[]){
cout << setw(10) << "Student";
cout << setw(5) << "Ave";
cout << setw(15) << "Quizzes" << endl;
for (int stNum = 1; stNum <= NUMBER_STUDENTS; stNum++){
cout << setw(10) << stNum;
cout << setw(5) << stAve[stNum - 1] << " ";
for (int quizNum = 1; quizNum <= NUMBER_QUIZZES; quizNum++){
cout << setw(5) << grade[stNum - 1][quizNum - 1];
}
cout << endl;
}
cout << "Quiz averages: ";
for (int quizNum = 1; quizNum <= NUMBER_QUIZZES; quizNum++){
cout << setw(5) << quizAve[quizNum - 1];
cout << endl;
}
}