C++ 计算gpa的函数和数组
这是我已经尝试过的,但每当我运行程序时,它就会崩溃并显示错误,尽管它编译正确。它要求我输入部门编号,但之后没有显示任何输出C++ 计算gpa的函数和数组,c++,arrays,function,C++,Arrays,Function,这是我已经尝试过的,但每当我运行程序时,它就会崩溃并显示错误,尽管它编译正确。它要求我输入部门编号,但之后没有显示任何输出 [![enter image description here][1]][1] #包括 #包括 #包括 使用名称空间std; 常数int STDTs=25; 常数int DEPTs=7; 无效初始化gpa(双gpa[][部门]) { 对于(int i=0;i<p>),我只考虑您的代码> CopyTePaTvg < /Cuff>函数> < /P> 您的sum变量应为dou
[![enter image description here][1]][1]
#包括
#包括
#包括
使用名称空间std;
常数int STDTs=25;
常数int DEPTs=7;
无效初始化gpa(双gpa[][部门])
{
对于(int i=0;i<p>),我只考虑您的代码> CopyTePaTvg < /Cuff>函数> < /P>
- 您的
sum
变量应为double
类型,将其声明为int
会使您的所有计算(特别是sum+=gpa[j][i]
和sum/STDTs
,这是一个整数除法)容易发生截断错误
- 您将两个循环嵌套在错误的顺序中:您应该将某个系所有学生的分数相加,以计算该系的平均值。此外,
deptAvg[j]
在每次执行外部循环时都会被覆盖
- 您在
main
中将gpa
声明为double-gpa[STDTs][DEPTs];
,但在循环中您使用的是gpa[j][i]
,其中j
在[0,STDTs范围内
修改后的版本可以是:
void computeDeptAvg(double gpa[][DEPTs] , double deptAvg[])
{
for(int i=0;i<STDTs;i++)
{
int sum=0;
for(int j=0;j<DEPTs;j++)
{
sum+=gpa[j][i];
deptAvg[j]=double(sum/STDTs*1.0);
}
}
}
void computeDeptAvg(双gpa[][DEPTs],双deptAvg[])
{
对于(int d=0;d
什么类型的错误?向我们显示实际的错误消息!当您访问不应该访问的数据时,您的程序可能会崩溃;在您的情况下,使用矩阵上的越界索引;例如..if(gpa[i][x-1]在这一点上,学习使用调试器将对您有益,方法是运行到出错点并检查当时内存中的内容。@Pandrei如果您输入一个介于1
和7
之间的数字,而不是0
和6
。@BenSteffan我的意思是这样做,并向我询问部门编号但在那之后它崩溃了,并说第二季度,exe已经停止工作
void computeDeptAvg(double gpa[][DEPTs] , double deptAvg[])
{
for(int i=0;i<STDTs;i++)
{
int sum=0;
for(int j=0;j<DEPTs;j++)
{
sum+=gpa[j][i];
deptAvg[j]=double(sum/STDTs*1.0);
}
}
}
void computeDeptAvg(double gpa[][DEPTs] , double deptAvg[])
{
for(int d = 0; d < DEPTs; d++)
{
double sum = 0.0;
for(int s = 0; s < STDTs; s++)
{
sum += gpa[s][d];
}
deptAvg[d] = sum / STDTs;
}
}