我需要从文本文件中给出的数字列表中计算平均值。我得到了它的工作,但由于某种原因,它是在列表中添加最后一个数字两次,我不知道为什么。
文件中的数字是
34.8
33.5
32.9
30.5
33.3
31.9
30.6
34.4
36.2
35.2
33.2
31.0
31.8
34.4
33.0
32.9
32.8
31.9
31.6
32.2
29.5
36.8
30.9
30.2
35.3
32.1
31.2
36.0
38.2
34.2
34.5
34.7
33.2
39.4
31.2
28.6
代码:
double n;
double total=0;
double count=0;
double average=0;
ifstream input;
char name[13];
cout << "Enter a file name. "
<< "12 characters or less, please."
<< endl;
cin >> name;
input.open(name);
if(input.is_open())
{
while(input.good())
{
do(!input.eof())
{
input>>n;
total=total+n;
count++;
}
average=total/count;
cout<<"sum "<<total<<" count "<<count<<" average "<<average << endl;
}
input.close();
}
else
{
cout << "Error opening file\n";
}
}
答案 0 :(得分:3)
你应该:
while(input >> n){
total+=n;
++count;
}
而不是你的循环。最后一次添加两次的原因是因为如果input >> n
失败(例如由于EOF),则n保持不变并再次添加。