开发者

Pass an array through a function

开发者 https://www.devze.com 2023-04-03 10:49 出处:网络
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

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

    开发者_JS百科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.


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;


std::accumulate should do the trick.

#include <numeric>

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


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消