Найти среднее арифметическое всех элементов массива, которые ∈(x, y] (x, y вводить с клавиатуры)

Найти среднее арифметическое всех элементов массива, которые ∈(x, y] (x, y вводить с клавиатуры).

int massiv[7];
printf(" \n", i);
for (i=1; i<=7; i++)
scanf("%d", &massiv[i]);
printf("x y");
scanf("%d", &x, &y);
int avg,x,y;
x=0;
y=0;
avg = 0;
for (i=1; i<=7; i++)
{
avg += massiv[i];
}
avg = avg / 7;
printf("avg=%d\n", avg);
}
все что смог сделать

Ответы (1 шт):

Автор решения: nomnoms12

Вы не реализовали проверку на вхождение в диапазон (x, y). Сделать это можно с помощью простого условия:

massiv[i] > x && massiv[i] < y

Но так как не все числа могут входить в диапазон, дополнительно вы должны подсчитывать количество нужных чисел:

int amt = 0;
for (i = 0; i < 7; i++) {
    if (massiv[i] > x && massiv[i] < y) {
        avg += massiv[i];
        amt++;
    }
}

Также нужно учесть, что тип int не позволяет хранить дробные числа. А среднее арифметическое часто оказывается дробным числом. Используйте тип double для переменной avg, чтобы не потерять точность:

double avg;
avg = avg / amt;

В коде ещё много ошибок:

  • Не заполняете первый элемент массива и выходите за его границу
  • Не указываете строку формата для инициализации y
  • Обнуляете ввод пользователя
  • При выводе avg указываете, что это целое число
→ Ссылка