所以即时使用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");
}
答案 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;