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