我正在尝试通过函数传递一个简单的数组来计算均值。
int main()
{
int n = 0; // the number of grades in the array
double *a; // the array of grades
cout << "Enter number of scores: ";
cin >> n;
a = new double[n]; // the array of grades set
// to the size of the user input
cout << "Enter scores separated by blanks: ";
for(int i=0; i<n; i++)
{
cin >> a[i];
}
computeMean(a, n);
}
double computeMean (double values[ ], int n)
{
double sum;
double mean = 0;
mean += (*values/n);
return mean;
}
现在代码只取了输入的最后一个数字的平均值。
答案 0 :(得分:5)
你的功能没有循环。它应该是这样的:
double sum = 0;
for (int i = 0; i != n; ++i)
sum += values[i];
return sum / n;
我很惊讶您当前版本只接受 last 号码,它应该只接受第一个号码,因为*values
与{values[0]
相同1}}。
更好的解决方案使用惯用的C ++:
return std::accumulate(values, values + n, 0.0) / n;
答案 1 :(得分:2)
std::accumulate
应该可以解决问题。
#include <numeric>
double computeMean (double values[ ], int n) {
return std::accumulate( values, values + n, 0. ) / n;
}
答案 2 :(得分:0)
这是一个家庭作业问题吗?
您需要单步执行数组中的所有值。您当前正在输出数组中的第一个数字除以项目数。