【问题标题】:I'm having trouble trying to calculate the sum and average involving an array我在尝试计算涉及数组的总和和平均值时遇到问题
【发布时间】:2014-01-29 13:08:21
【问题描述】:

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

值列表: 1.0 2.0 3.0 4.0

然后,在我输入我的哨兵值 -1.0 后,它会计算出平均值,即 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;
}

【问题讨论】:

  • 你应该习惯在第一次使用之前就声明变量,并将它们保持在最内部的范围内。

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


【解决方案1】:

scores[count] 将是一个垃圾值,因为此时 count 是 10。

我想你想要的是

sum += scores[i];

然后平均值将是(循环结束后)

sum / count

【讨论】:

  • 好吧,count 可能不是 10,但不管是什么,scores[count] 中都有垃圾
  • 谢谢,现在说得通了。另一个问题,如何使用 if else 语句在数组中找到中间值?
  • 首先问问自己为什么需要一个 if-else 语句,这应该会给你一个提示......
  • 如果一个值是奇数,那么显示一个中间元素?否则,显示两个中间元素?
  • 干得好!不是价值,而是数量,但是是的。那么如果 count 是奇数,如何得到中间元素呢?
【解决方案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;

因此,您通过添加每个 score[i] 来累积 sum,最后,您将 sum 除以 count 以得出平均值。

【讨论】:

    【解决方案3】:

    我相信 sum/count 会更适合您打算做的事情。

    尝试添加

    cout<<"\n\nThe average of the values is:"<< (sum / count) <<endl;
    

    在for循环之后,所以平均值将被正确计算并且只有一次。

    【讨论】:

      猜你喜欢
      • 2023-01-27
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多