C++数组平均值工作不正常

C++ Array average not working right

本文关键字:不正常 工作 平均值 数组 C++      更新时间:2023-10-16

所以我使用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");
}

您将所有数字读入

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();

在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));

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

环路应该是

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;
for (int i = 0; i < 5; i++) {
   sum += array[i];
}
average = sum / n;