Нам говорят написать функцию, которая принимает массив двойных чисел и возвращает сумму и среднее число чисел в массиве.
Вот код:
#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;
}
}
Я чувствую, что есть что-то, что я упускаю или не понимаю, так как я все еще новичок в кодировании. Любая помощь будет оценена
Одна мысль, ваш массив состоит из шести элементов, но вы говорите sumAverage
, что он состоит из десяти элементов. Неопределенное поведение.
И почему sum
это int
? И почему вы имеете в виду A[sum]
?
Поскольку ваш массив содержит double
s, почему вы хотите, чтобы результаты вычислений Asum
и Aaverage
имели тип int
? Используя пример с двумя элементами, сумма 2.1
и 1.2
равна 3.3
, среднее значение равно 1.65
, но вычисление суммы и среднего значения как int
даст sum
как 3
, а среднего как 1
, что, вероятно, не имеет особого смысла.
Я думаю, что ваш код означает это.
cout << "The sum is " << sum << endl << endl;
cout << "The average is " << average;
Если вы хотите напечатать десятичную точку, вам нужно изменить тип данных «сумма» и «среднее значение».
double sum,average;
Есть несколько проблем с данным кодом: 1) Во входном массиве всего 6 элементов, но вызов функции указывает, что в массиве 10 элементов. Это может привести к доступу к памяти за пределами памяти, что является неопределенным поведением. 2) Предполагается, что функция возвращает сумму и среднее значение, но на самом деле она возвращает индекс суммы и среднего значения в массиве. Это неправильно. 3) Расчет среднего значения неверен. Должно быть Aaverage = sum/numvalues. Вот исправленная версия кода:
#include <iostream>
#include <iomanip>
using namespace std;
void sumAverage(double[], int, double &, double &);
int main()
{
double A[6] = {3.54, 8.12, 39.04, 12.23, 49.32, 90.23};
double sum, average;
sumAverage(A, 6, sum, average);
cout << "The sum is " << sum << endl;
cout << "The average is " << fixed << setprecision(2) << average << endl;
return 0;
}
void sumAverage(double array[], int numvalues, double &Asum, double &Aaverage)
{
double sum = 0;
for (int sub = 0; sub < numvalues; sub++)
{
sum += array[sub];
}
Asum = sum;
Aaverage = sum / numvalues;
}
помочь с чем? ... вы ничего не сказали о проблеме