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;
    }
}