通过函数传递数组

时间:2011-09-08 22:32:19

标签: c++ arrays mean

我正在尝试通过函数传递一个简单的数组来计算均值。

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;
}

现在代码只取了输入的最后一个数字的平均值。

3 个答案:

答案 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)

这是一个家庭作业问题吗?

您需要单步执行数组中的所有值。您当前正在输出数组中的第一个数字除以项目数。