使用函数计算总和和平均值的程序

时间:2017-11-21 03:05:53

标签: c++

我正在做一个C ++问题,我需要生成一个随机数,然后这个随机数是程序将提示用户输入的整数。

然后我需要使用两个单独的函数:1计算并返回总和,另一个计算并返回平均值。

到目前为止,这是我的代码:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int calculateSum(int, int);
int calculateAvg(int, int, int);

int main()
{
    int sum = 0;
    int average = 0;
    int x;
    int y;
    int n = 0;

    srand(time(0));
    y = rand() % 10;

    for (x = 1; x <= y; x++) {
        cout << "Enter integer " << x << ": ";
        cin >> n;
    }
    cout << "Sum: " << calculateSum(n, sum) << endl;
    cout << "Average: " << calculateAvg(average, sum, y) << endl;

    system("pause");
    return 0;
}

int calculateSum(int n, int sum)
{
    sum = sum + n;
    return sum;
}

int calculateAvg(int average, int sum, int y)
{
    average = sum / y;
    return average;
}

代码的问题是每当我运行它时,它只需要最后一个整数来计算总和(例如,如果输入的最后一个整数是5,所有整数的总和将是5,这是不正确的,因为它忽略用户之前的整数),平均值始终为0,任何帮助修复这些问题都将不胜感激。

4 个答案:

答案 0 :(得分:0)

您每次在循环中覆盖n,但最后只更新sum。每次都更新sum

答案 1 :(得分:0)

您的int n只有一个整数的空间,因此您的for循环只会覆盖您输入的每个整数n。当然,您输入的最后一个整数将是您离开for循环时唯一保存的整数。

您需要在for循环中调用calculateSum(),以便在循环的每次迭代中递增sum。所以而不是:

for (x = 1; x <= y; x++) {
    cout << "Enter integer " << x << ": ";
    cin >> n;
}
cout << "Sum: " << calculateSum(n, sum) << endl;

您可以这样设置:

for (x = 1; x <= y; x++) {
    cout << "Enter integer " << x << ": ";
    cin >> n;
    sum = calculateSum(n, sum); // increment sum every iteration
}
cout << "Sum: " << sum << endl;

与此特定问题有些无关,您的calculateSum()calculateAvg()函数实际上并未更新您已定义的sumaverage个变量在main();他们只返回这些功能的结果。

要通过引用传递sumaverage(您在此处尝试完成的操作),您需要更改以下功能签名:

int calculateSum(int n, int sum);
int calculateAvg(int average, int sum, int y);

要:

void calculateSum(int n, int &sum);
void calculateAvg(int &average, int sum, int y);

(我还将回复类型从int更改为void,因为您不需要返回sumaverage - 您&# 39; d已经在各自的职能中对其进行了修改)

答案 2 :(得分:0)

问题是你应该使用数组,而不是典型的整数 而不是您当前的n

int array[10];
for(int i=0; i <=y; i++)
{
cin >>n;
array[i] = n;
}

答案 3 :(得分:0)

将输入的值保存在向量中,然后使用std :: accumulate。

请参阅http://en.cppreference.com/w/cpp/algorithm/accumulate

上的示例