1
我正在計算一個函數來計算結構數組中分數的平均值。該函數循環遍歷一個數組,並檢查每個具有爲該結構的id參數填充的值的項目。對於這些項目中的每一項(其中id!=「」),分母都會增加1 ,並且數組總和變量會隨着數組中該項目的得分參數的值遞增。我面臨的問題是數組中沒有項目,並且在打印總體報告時調用該函數。 avg變成0/0,表示出錯。我嘗試將denom start值更改爲1,因此如果數組爲空,則計算爲0/1 = 0,但這肯定會影響實際平均值。任何想法如何解決這個問題?當沒有值時,跳過計算平均值。 C++。Xcode
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;
}
哦感謝之前!應該只是如果(denom)或if(denom> 0){avg = arraySum/denom;返回avg;}其他{返回0;}? – asaber
@asaber如果(denom)'等於'if(denom!= 0)','C/C++''。我喜歡'如果(denom)'導致它更短 – fnc12
這是一個在函數內很方便的方法的例子,但是沒有考慮到調用者的需要。具體來說,這個解決方案沒有辦法讓調用者區分具有平均爲零的元素的數組和沒有元素的數組。如果這種區分對於調用者來說很重要,那麼這個解決方案是無用的。 – Peter