Вычисление средней оценки от 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 судей спортсмену.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д