Вычисление средней оценки от 8 судей спортсмену не всегда вычисляется верно - C (СИ)
Формулировка задачи:
Программа вычисляет среднюю оценку от 8 судей спортсмену, предварительно отбрасывая max и min оценки.
В Visual Studio и в компиляторе BCC считает далеко не всегда правильно, помогите найти ошибку. Заранее спасибо)
#include <stdio.h> #include <conio.h> #define N 8 int main() { int i; float max,min,vec[N]; float sum = 0.0, aver = 0.0; printf("Vvedite 8 ocenok:\n"); for(i=0; i<N; i++) { printf("%d ocenka: ",i+1); scanf("%f",&vec[i]); } max = vec[0], min = vec[0]; for(i=0; i<N; i++) { if(vec[i]<min) min = vec[i]; if(vec[i]>max) max = vec[i]; } for(i=0; i<N; i++) { if(vec[i] == min || vec[i] == max) i++; sum += vec[i]; } aver = sum/6; printf("Average: %4.2f",aver); getch(); }
Решение задачи: «Вычисление средней оценки от 8 судей спортсмену не всегда вычисляется верно»
textual
Листинг программы
int counter = 0; for(i=0; i<N; i++) if(vec[i] != min && vec[i] != max) { counter++; sum += vec[i]; } ave = static_cast<double>(sum) / counter;
Объяснение кода листинга программы
В данном коде выполняется вычисление средней оценки от 8 судей спортсмену.
- Объявляется переменная
counter
со значением 0, которая будет использоваться для подсчета количества оценок, которые будут учтены при вычислении средней оценки. - Задается условие с помощью цикла
for
, которое проверяет каждый элемент массиваvec
. Элементы массиваvec
сравниваются с минимальным и максимальным значениями (переменныеmin
иmax
). Если элемент не равен минимальному и максимальному значению, то он учитывается при вычислении средней оценки. - Увеличивается значение переменной
counter
на 1, так как текущий элемент массиваvec
удовлетворяет условию и будет учтен при вычислении средней оценки. - К значению переменной
sum
прибавляется значение текущего элемента массиваvec
. Переменнаяsum
используется для хранения суммы всех оценок, которые будут учтены при вычислении средней оценки. - После завершения цикла
for
, значение переменнойsum
делится на значение переменнойcounter
, чтобы получить среднюю оценку. Для выполнения деления используется явное приведение типов(double)
для переменнойsum
, чтобы обеспечить точность вычислений с плавающей точкой. - Полученное значение средней оценки сохраняется в переменной
ave
. Таким образом, данный код выполняет вычисление средней оценки от 8 судей спортсмену.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д