for( k = 0; k < n; k++ )
{
total += total + temps[k];
}
avgTemp = total / n;
temps
是包å«n
å…ƒç´ çš„æ•°ç»„ã€‚ avgTemp
å˜å‚¨temps
ä¸æ‰€æœ‰å€¼çš„å¹³å‡å€¼ã€‚ kåªæ˜¯ä¸€äº›æ•´æ•°ä½¿æˆ‘的循环工作。 k,nå’Œtotalå·²ç»åœ¨ä¸Šé¢é€‚当地声明了。 total
跟踪数组ä¸å…ƒç´ 的总数。
我的è¿åŠ¨èƒ½å‘Šè¯‰æˆ‘这是错的。我åšé”™äº†ä»€ä¹ˆï¼Ÿ
ç”案 0 :(得分:6)
æ¤
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的代ç 。
ç”案 1 :(得分:2)
首先,total += temps[k]
+ =æ„味ç€total = total + temps[k]
å·²ç»
顺便说一下, 总数是浮动还是åŒå€ï¼Ÿå¦åˆ™ä½ æ£åœ¨è¿›è¡Œæ•´æ•°é™¤æ³•ã€‚
ç”案 2 :(得分:2)
您的代ç 在æ¯æ¬¡è¿ä»£æ—¶éƒ½ä¼šå‘è‡ªèº«æ·»åŠ â€œtotalâ€ï¼Œè¿™ä¸æ˜¯æ‚¨æƒ³è¦çš„ã€‚ä½ éœ€è¦æ”¹å˜ï¼š
total += total + temps[k];
到
total += temps[k];
ç”案 3 :(得分:1)
获å–æ•°å—的总和时,您è¦å°†æ€»æ•°æ·»åŠ 到自身,然åŽæ·»åŠ ä¸‹ä¸€ä¸ªå…ƒç´ ã€‚
total += total + temps[k];
应该是:
total += temps[k];
ç”案 4 :(得分:0)
bames53's commentä¸æ到的accumulate
实际上是解决æ¤é—®é¢˜çš„最佳选择。给定n
,它是容器的大å°ï¼Œit
,它是指å‘å®¹å™¨ç¬¬ä¸€ä¸ªå…ƒç´ çš„æŒ‡é’ˆæˆ–è¿ä»£å™¨ï¼Œæ‚¨å¯ä»¥å¯¹æ•°ç»„,动æ€åˆ†é…的数组或å‘é‡æ‰§è¡Œæ¤æ“作:>
const auto avgTemp = accumulate(it, next(it, n), typename iterator_traits<remove_const_t<decltype(foo)>>::value_type{}) / n;