for(k = 0; k < n; k++)
{
total += total + temps[k];
}
avgTemp = total/n;
temps
是我的數組,其中包含n
元素。 avgTemp
存儲temps
中所有值的平均值。 k只是一些整數,使我的循環工作。 k,n和總數已經在上面的某處適當地聲明瞭。 total
跟蹤數組中元素的總數。C++發現數組中的平均數
我的練習題告訴我這是錯誤的。我究竟做錯了什麼?
for(k = 0; k < n; k++)
{
total += total + temps[k];
}
avgTemp = total/n;
temps
是我的數組,其中包含n
元素。 avgTemp
存儲temps
中所有值的平均值。 k只是一些整數,使我的循環工作。 k,n和總數已經在上面的某處適當地聲明瞭。 total
跟蹤數組中元素的總數。C++發現數組中的平均數
我的練習題告訴我這是錯誤的。我究竟做錯了什麼?
這
for(k = 0; k < n; k++)
{
/// here's the error.
/// You assign the new value to total as (total = total + total + temps[k])
total += total + temps[k];
}
avgTemp = total/n;
應該
for(k = 0; k < n; k++) { total += temps[k]; }
avgTemp = total/n;
或
for(k = 0; k < n; k++) { total = total + temps[k]; }
avgTemp = total/n;
使用迭代總和甚至會更好。它可以避免舍入錯誤。
avgTemp = temps[0];
for(k = 1 ; k < n ; k++) { total = (temps[k] + (double)(k-1) * total)/ (double)k; }
bames53在評論中也給出了一個很好的基於STL的代碼。
首先,total += temps[k]
+ =表示total = total + temps[k]
已經
順便說一句, 佔總聲明爲float或double?否則,你正在做一個整數部分。
當獲得數字的總和時,您將總數添加到自身,然後添加下一個元素。
total += total + temps[k];
應該是:
total += temps[k];
你的代碼是「總」,並稱給自己的每一次迭代,這是不是你想要的。您需要更改:
total += total + temps[k];
到
total += temps[k];
'雙avgTemp =標準::累加(臨時工,臨時工+ N,0.0)/ N;''假設是temps'存儲一串溫度作爲浮點值。 – bames53