我们被告知编写一个函数,该函数接受一个双精度数组,并传回数组中数字的总和和平均值
代码如下:
#include <iostream>
#include <iomanip>
using namespace std;
void sumAverage (double[], int, int &, int &);
int main()
{
double A[10] = { 3.54, 8.12, 39.04, 12.23, 49.32, 90.23};
int sum, average;
sumAverage (A, 10, sum, average);
cout << "The sum is " << A[sum] << endl << endl;
cout << "The average is " << A[average];
return 0;
}
void sumAverage (double array[], int numvalues, int &Asum, int &Aaverage)
{
double sum = 0;
for (int sub = 0; sub < numvalues; sub++)
{
sum += array[sub];
Asum = sum;
Aaverage = Asum / numvalues;
}
}
我觉得有一些东西我错过了或没有得到这一点,因为我仍然是相当新的编码。任何帮助将不胜感激
2条答案
按热度按时间qij5mzcb1#
下面的代码有几个问题:1)输入数组只有6个元素,但函数调用指定数组中有10个元素,这会导致访问越界内存,这是未定义的行为2)函数本来应该传回求和和求平均值但实际上是在传递回数组中的和和平均值的索引。这是不正确的。3)平均值的计算不正确。它应该是Aaverage = sum / numvalues。下面是代码的更正版本:
c2e8gylq2#
我想你的代码是这个意思。
如果你想打印小数点,你需要改变“总和”和“平均”的数据类型