Вычисление средней оценки от 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 судей спортсмену.