我在尝试计算涉及数组的总和和平均值时遇到了麻烦

时间:2014-01-29 13:08:21

标签: c++ arrays for-loop sum average

我正在尝试计算某些值的总和和平均值,例如:

值列表: 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;
}

3 个答案:

答案 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循环之后

,所以平均值将被正确计算并且只有一次。