我正在尝试计算某些值的总和和平均值,例如:
值列表: 1.0 2.0 3.0 4.0
然后在我输入-1的哨兵值后,它计算的平均值为2.5。但是,我最终会得到一个很长的负数(-9255963134931 ......)。我是数组的新手,我很困惑如何得到我想要的输出。任何帮助表示赞赏。 (如何使用if else语句找到中间值?)
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
int i, count=0;
double scores [10];
double value;
double sum=0.0;
cout << "Author: J. Soto\n";
cout << fixed << showpoint << setprecision(1);
cout<<"Input -1.0 when you are ready to stop."<<endl;
cout<<"Input a value: ";
cin>>value;
while(value!= -1.0 && count<10) {
scores [count] = value;
count = count + 1;
cout<<"Input a value: ";
cin>> value;
}
cout<<"\nYou entered "<<count<<" values"<<endl;
for(i=0; i<count; i++) {
cout << setw(6) << scores[i];
sum= value+scores[count];
cout << "\n\nThe average of the values is:" << sum << endl;
}
return 0;
}
答案 0 :(得分:3)
scores[count]
将是垃圾值,因为此时count
为10。
我认为你想要的是
sum += scores[i];
然后平均值将(在循环结束后)
sum / count
答案 1 :(得分:2)
在最后一个循环中你需要这样的东西:
for (i=0; i<count; i++)
{
cout<<setw(6)<< scores[i];
sum += scores[i];
}
cout<<"\n\nThe average of the values is:"<< (sum / count) <<endl;
因此,您通过添加每个sum
累积score[i]
,最后,您将sum
除以count
以得出平均值。
答案 2 :(得分:1)
我相信总和/数量会更符合您打算做的事情。
尝试添加
cout<<"\n\nThe average of the values is:"<< (sum / count) <<endl;
在for循环之后,所以平均值将被正确计算并且只有一次。