Найти среднее арифметическое всех элементов массива, которые ∈(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указываете, что это целое число