Мне нужно написать программу на C++, которую можно использовать для определения оценок в конце семестра. Для каждого ученика, который идентифицируется целым числом от 1 до 60, необходимо сохранить четыре экзаменационных класса. Кроме того, должны вычисляться две средние средние оценки. Среднее значение первого класса - это среднее значение для всех четырех классов. Средний средний класс рассчитывается путем взвешивания четырех сортов следующим образом: первый класс получает вес 0,2, второй класс получает вес 0,3, третий класс - 0,3, а четвертый класс - 0,2; который вычисляется следующим образом:Почему моя переменная weighted_grade не работает?
0,2 * grade1 + 0,3 * grade2 + 0,3 * grade3 + 0,2 * grade4
Используя эту информацию, вы построить 60 х 7 двумерный массив, в котором используется первый столбец для номера ученика, следующие четыре столбца для оценок и последние два столбца для вычисленных окончательных оценок. Результатом программы должно быть отображение данных в заполненном массиве.
Вот что у меня есть, но мое второе среднее значение отключено. Например, у моего 1-го ученика должно быть как среднее значение 100. Однако Avg2 выходит равным 1000, и я понятия не имею, почему. Помогите?
#include <iostream>
#include <math.h>
using namespace std;
int grade_Calc(int sg[][5]);
int main()
{
int student_grades[5][5] =
{
{1, 100, 100, 100, 100}, //inputs an array of students 1-5's grades
{2, 100, 0, 100, 0},
{3, 82, 94, 73, 86},
{4, 64, 74, 84, 94},
{5, 94, 84, 74, 64},
};
grade_Calc(student_grades);
return 0;
}
int grade_Calc(int sg[][5])
{
int sum_for_avg = 0;
double weighted_grade = 0.0;
double simple_avg = 0.0;
double sum2 = 0.0;
cout << "Stdnt" << "\t" << "Grd1" << "\t" << "Grd2" << "\t" << "Grd3" << "\t" << "Grd4" << "\t" << "Avg1" << "\t" << "Avg2" << endl;
for (int r = 0; r < 5; r++)
{
for (int c = 0; c < 5; c++)
{
cout << sg[r][c] << "\t\t";
if (c != 0)
{
sum_for_avg += sg[r][c];
if ((c == 1) || (c == 4))
{
weighted_grade += (0.3 * sg[r][c]);
}
else
{
weighted_grade += (0.2 * sg[r][c]);
}
}
}
simple_avg = (sum_for_avg/4.0);
cout << "\t" << simple_avg << "\t" << weighted_grade;
for (int k = 0; k < 5; k++)
{
if (k != 0)
{
sum2 += pow((sg[r][k] - simple_avg), 2);
}
}
cout << sqrt(sum2/4.0);
sum_for_avg = 0;
weighted_grade = 0.0;
cout << endl;
}
return 0;
}
Вы обновили вопрос по другому запросу. Это сбивает с толку, так как сейчас уже есть ответы на старые. Я думаю, вы должны открыть новый вопрос, чтобы мы могли начать с чистой точки. Конечно, вы можете поместить ссылку на новую здесь и ссылку на эту в новой. –