通过函数传递数组

发布于 2024-12-03 13:18:13 字数 643 浏览 0 评论 0原文

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

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

现在,代码仅取最后输入的数字的平均值。

I'm trying to pass a simple array through a function to compute the 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;
}

Right now the code is only taking the mean of the last number that was inputted.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寄居人 2024-12-10 13:18:14

你的函数中没有循环。它应该是这样的:

double sum = 0;
for (int i = 0; i != n; ++i)
  sum += values[i];

return sum / n;

我很惊讶你当前的版本只采用最后数字,它应该只采用第一个数字,因为*valuesvalues[0] 相同。

更好的解决方案使用惯用的 C++:

return std::accumulate(values, values + n, 0.0) / n;

There's no loop in your function. It should be something like:

double sum = 0;
for (int i = 0; i != n; ++i)
  sum += values[i];

return sum / n;

I'm surprised your current version only takes the last number, it should only take the first number, since *values is the same as values[0].

A better solution uses idiomatic C++:

return std::accumulate(values, values + n, 0.0) / n;
帝王念 2024-12-10 13:18:14

std::accumulate 应该可以解决问题。

#include <numeric>

double computeMean (double values[ ], int n) {
    return std::accumulate( values, values + n, 0. ) / n;
}

std::accumulate should do the trick.

#include <numeric>

double computeMean (double values[ ], int n) {
    return std::accumulate( values, values + n, 0. ) / n;
}
别闹i 2024-12-10 13:18:14

这是家庭作业问题吗?

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

Is this a homework question?

You nead to step through all of the values in your array. You're currently outputting the first number in the array divided by the number of items.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文