【发布时间】:2015-05-08 00:38:34
【问题描述】:
我需要编写一个 C++ 程序,用于在学期末确定成绩。对于每个由 1 到 60 之间的整数标识的学生,必须保留四个考试成绩。此外,必须计算两个最终平均成绩。一年级的平均分就是所有四个年级的平均分。二年级的平均值是通过四个等级的加权计算得出的:一年级的权重为0.2,二年级的权重为0.3,三年级的权重为0.3,四年级的权重为0.2;计算为:
0.2 * 等级1 + 0.3 * 等级2+ 0.3* 等级3 + 0.2 * 等级4
使用此信息,您将构建一个 60 X 7 二维数组,其中第一列用于学生编号,接下来的四列用于成绩,最后两列用于计算的最终成绩。程序的输出应该是完整数组中数据的显示。
这就是我所拥有的,但我的第二个平均值已关闭。例如,我的第一个学生的两个平均值都应该是 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;
}
【问题讨论】:
-
您已用另一个请求更新了问题。这令人困惑,因为现在已经有一些旧答案的答案。我认为您应该提出一个新问题,以便我们可以从一个干净的角度开始。当然你可以在这里放一个新的链接,新的也可以放这个链接。