Вычисление среднего значения массива

Здравствуйте, у меня есть проблемы с вычислением среднего значения в моей функции, программа компилируется, однако я не получаю ожидаемый ответ 64.2 для распечатки и вместо этого получаю случайный набор целых чисел и символов.

Это не весь код, а только соответствующие переменные и функции.

        // main function and prototyping would be here
int size=0;
float values[]={10.1, 9.2, 7.9, 9.2, 13.0, 12.7, 11.3};float mean(float values[], int size)
{
float sum = 0;
float mean = 0;

for (size = 0; size > 7; size++)
{
sum += values[size];
mean = sum / 7;
}

return mean;
}

0

Решение

Почему тест size > 7 там? Ожидаете, что ваше начальное значение будет иметь необычно большое значение ноль? Вполне вероятно, что вы имеете в виду size < 7Хотя использование произвольных магических чисел, как это является проблемой.

Что вы, вероятно, хотите, это:

float mean(float* values, int size)
{
float sum = 0;
for (int i = 0; i < size; ++i)
sum += values[i];

return sum / size;
}

Чтобы быть больше C ++, вы бы хотели, чтобы эта подпись была:

float mean(const float* values, const size_t size)

Таким образом, вы можете обнаружить любые ошибки при изменении этих значений.

0

Другие решения

Измените ваш цикл так:

for (size = 0; size < 7; size++)
{
sum += values[size];
}
mean = sum / 7;
  1. Ваше прекращение условия для for петля не права.
  2. Переместить mean вне цикла.
1

 for (size = 0; size > 7; size++)

Так как размер инициализируется как 0 и увеличивается на 1, он становится равным 1 в конце первой итерации и не проходит тест (это не> 7). Таким образом, он сразу выходит из цикла.

Во-вторых, вы вычисляете среднее значение внутри цикла, когда вы должны вычислить его после завершения цикла. Теоретически, вы должны получить правильное значение, поскольку вы возвращаете его как среднее значение сумм к этой точке в цикле, но это пустая трата времени. Вы также стираете размер, переопределяя его.

float mean(float values[], int size)
{
float sum = 0;
float mymean = 0;

for (int i = 0; i < size; i++)
{
sum += values[i];
}
mymean = sum / size;

return mymean;
}
1
По вопросам рекламы [email protected]