Minmax21. Дано целое число $$N (> 2)$$ и набор из $$N$$ чисел — значений некоторой величины, полученных в $$N$$ опытах. Найти среднее значение этой величины. При вычислении среднего значения не учитывать минимальное и максимальное из имеющихся в наборе значений.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include <stdio.h> int main(void) { float r,min,max,sum=0; int n,i,maxi,mini; printf("N:"); scanf("%i", &n); for (i=1; i<=n; ++i){ printf("%i>",i); scanf("%f", &r); if (i==1) { min=r; mini=0; max=r; maxi=0; } if (r<min){ if (min!=max) sum+=min*mini; min=r; mini=0; } if (r>max){ if (max!=min) sum+=max*maxi; max=r; maxi=0; } if (r==min) ++mini; else if (r==max) ++maxi; else sum+=r; } printf("%f\n",sum/(n-maxi-mini)); return 0; } |
Решение, подразумевается, что существует только одно минимальное и одно максимальное значение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include <stdio.h> int main(void) { int n,i; float k,min,max,mean; printf("N:"); scanf("%i", &n); printf("1>:"); scanf("%f", &k); min=k; max=k; mean=k; for (i=2; i<=n; ++i){ printf("%i>",i); scanf("%f", &k); if (k<min) min=k; if (k>max) max=k; mean=mean+k; } printf("%f\n",(mean-min-max)/(n-2)); return 0; } |
Другие задачи из раздела Minmax можно посмотреть здесь.
На суд общественности):