C ++ Array平均不能正常工作

时间:2014-04-22 00:19:41

标签: c++ arrays

所以即时使用C ++,我无法弄清楚我做错了什么 要查找平均值,只需在数组中添加数字,然后潜水即可购买数组中的数字 我的问题就在于阵列,但我不确定,因为我将此作为平均结果。

所以我输入了这个

2
3
4
5
6

输出

The average number is -1.71799e+008

数字的正确平均值是4,所以我不确定我的错误在哪里。任何帮助或提示都会非常有帮助。我也从我在这里看到的堆叠溢出设置我的平均线,但仍然没有运气。

#include <iostream>
#include <iomanip>
using namespace std;

void main ()
{
    //Variables
    double average;
    double sum = 0;
    int numabove = 0;
    int i, array[5]; 
    int n = 5;
    //array
    cout << "Input 5 values.." << endl;
    for( i = 0; i < 5; ++i )
        cin >> array[5];
    for (int i = 0; i < 5; i++)
        //average
        average = ((float(array[i])/n));
    cout <<"The average number is " << average << "\n" << endl;
    //loop
    // I will do the loop after the average is working. Because
    // i need the average to work so i can do the loop which use's the loop below
    cout << "The numbers above average are: " << numabove << endl;
    system("PAUSE");
}

4 个答案:

答案 0 :(得分:2)

您将所有数字都读入

cin >> array[5];

不存在并产生未定义的行为。 纠正这个:

   for( i = 0; i < 5; ++i )
    cin >> array[i];

然后正确计算平均值:

double average = 0;
for ( int i = 0; i < 5; ++i) {
   sum += array[ i];
}
average = sum / n;

也许您还可以查看std::vector这是C ++动态数组,并且非常灵活且易于使用。有了这个,你可以写:

std::vector<int> v(5);
for( i = 0; i < 5; ++i )
   std::cin >> v[i];
double sum = std::accumulate( v.begin(), v.end(), 0.0);
double mean = sum / v.size();

答案 1 :(得分:2)

在你的for循环阅读值中,你应该有:

for( i = 0; i < 5; ++i )
  cin >> array[i];

否则,您只是在索引5(cin >> array[5])读取所有超出范围的值。

然后,后面的算法应该对所有值求和,而不是覆盖平均变量5次:

average = 0;
for (int i = 0; i < 5; i++)
  //average
  average += ((float(array[i])/n));

答案 2 :(得分:1)

您总是在同一地点输入数字

循环应该是

for( i = 0; i < 5; ++i )
cin >> array[i];

另外,索引5超出范围,有效索引为{0,1,2,3,4}

最后你没有总结整个数组

您得到的结果是因为数组的数据未初始化

最快的解决方案可能是

int sum = 0; //initialize it really important
for( i = 0; i < 5; ++i ) 
{ 
    int num; 
    cin >> num; 
    sum += num; 
}
double average = double(sum) / 5.0;

答案 3 :(得分:0)

for (int i = 0; i < 5; i++) {
   sum += array[i];
}
average = sum / n;