C++ 不存在值时跳过计算平均值。C++;。Xcode

C++ 不存在值时跳过计算平均值。C++;。Xcode,c++,C++,我正在计算一个函数,该函数计算结构数组中分数的平均值。函数循环遍历数组,并检查每个为结构的id参数填充了值的项。对于这些项目中的每一项(其中id!=“”),分母都以1递增 数组sum变量随数组中该项的score参数值递增。我面临的问题是,数组中没有项目,并且在打印总体报告时调用了该函数。平均值变为0/0,表示错误。我尝试将denom start值更改为1,因此如果数组为空,则计算值为0/1=0,但这肯定会影响实际平均值。你知道怎么解决这个问题吗 double average(student o[

我正在计算一个函数,该函数计算结构数组中分数的平均值。函数循环遍历数组,并检查每个为结构的id参数填充了值的项。对于这些项目中的每一项(其中id!=“”),分母都以1递增 数组sum变量随数组中该项的score参数值递增。我面临的问题是,数组中没有项目,并且在打印总体报告时调用了该函数。平均值变为0/0,表示错误。我尝试将denom start值更改为1,因此如果数组为空,则计算值为0/1=0,但这肯定会影响实际平均值。你知道怎么解决这个问题吗

double average(student o[])
{
    int arraySum =0, denom =0;
    double avg;

    for(int s=0; s<50 ; s++)
    {
        if(o[s].id !="")
        {
            arraySum+= o[s].score;
            denom+=1;
        }
    }

    avg = arraySum/denom;  //?? when the array is empty this is 0/0
    return avg;
}
双倍平均(学生o[]
{
int-arraySum=0,denom=0;
双平均值;

对于(ints=0;s只需在计算结果之前添加
if
语句

double average(student o[])
{
    int arraySum =0, denom =0;
    double avg;

    for(int s=0; s<50 ; s++)
    {
        if(o[s].id !="")
        {
            arraySum+= o[s].score;
            denom+=1;
        }
    }
    if(denom){
        avg = arraySum/denom;  //?? when the array is empty this is 0/0
        return avg;
    }else{
        return 0;
    }
}
双倍平均(学生o[]
{
int-arraySum=0,denom=0;
双平均值;

对于(ints=0;s只需在计算结果之前添加
if
语句

double average(student o[])
{
    int arraySum =0, denom =0;
    double avg;

    for(int s=0; s<50 ; s++)
    {
        if(o[s].id !="")
        {
            arraySum+= o[s].score;
            denom+=1;
        }
    }
    if(denom){
        avg = arraySum/denom;  //?? when the array is empty this is 0/0
        return avg;
    }else{
        return 0;
    }
}
双倍平均(学生o[]
{
int-arraySum=0,denom=0;
双平均值;

对于(ints=0;谢谢!应该是if(denom)还是if(denom>0){avg=arraySum/denom;return avg;}否则{return 0;}?@asaber In
C/C++
如果(denom)
等于
if(denom!=0)
。我喜欢
if(denom)
cause it is shorter这是一种在函数中很方便的方法,但不考虑调用者的需要。具体地说,此解决方案无法让调用者区分元素平均值为零的数组和没有元素的数组。如果此区别为对于调用者来说很重要,那么这个解决方案是无用的。@Peter我同意,但是有什么更好的办法呢?传递对
denom
(非空ID的编号)的引用太多或引发异常?@Bob_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
C/C++
if(denom)
等于
if(denom!=0)
。我喜欢
if(denom)
cause it is shorter这是一种在函数中很方便的方法,但不考虑调用者的需要。具体地说,此解决方案无法让调用者区分元素平均值为零的数组和没有元素的数组。如果此区别为对于调用者来说很重要,那么这个解决方案是无用的。@Peter我同意,但是有什么更好的办法呢?传递对
denom
(非空ID的编号)的引用太多或引发异常?@Bob_uuu_uuu回答这个问题时,首先要对调用方需要该函数的行为进行推理。这个问题从错误的角度开始进行推理-在函数内部。