Помоги решить.Задача по массивам (паскаль).В спортивных соревнованиях 10 судей выставили свои оценки спортсмену. Итоговая оценка определяется так:
10-11 класс
|
самая наибольшая и самая наименьшая оценки из общей суммы удаляются (если таких оценок несколько, то удаляется только одна из них), затем среди оставшихся подсчитывается среднее арифметическое. Написать программу, которая позволила бы по известным оценкам судей автоматически выставлять итоговую оценку спортсмену.Решая эту задачу хотелось бы чтобы была расписана каждая строчка что в ней происходит.
Program Sport;
uses crt;
const n = 10; {количество оценок}
var {раздел описания переменных}
a:array [1..n] of integer; {массив с оценками}
max,min,i:integer; {max и min - наибольшая и наименьшая оценки; i -счётчик}
sum:real;{сумма, а потом среднее арифметическое (результат)}
begin
writeln('Просим судей выставить свои оценки:'); {вывод строки}
for i:=1 to n do {организуем цикл ввода оценок}
begin
write(i,'-й судья: '); readln(a[i]);{вывод строки и ввод оценки}
end;
writeln(); {вывод пустой строки (для красоты)}
min:=a[1]; {предполагаем для начала, что первая оценка - наименьшая}
max:=a[1]; {также предполагаем для начала, что первая оценка - наибольшая}
sum:=0; {для начала сумма равна 0}
for i:=1 to n do {организуем цикл для перебора всех оценок}
begin
if max<a[i] then max:=a[i]; {если текущая оценка больше max, то запоминаем её в max}
if min>a[i] then min:=a[i]; {если текущая оценка меньше min, то запоминаем её в min}
sum:=sum+a[i]; {добавляем текущую оценку к сумме}
end;
sum:=(sum-max-min)/(n-2); {здесь самое интересное: из суммы всех оценок вычитаем наибольшую и наименьшую, а полученный результат делим на 8 - количество оставшихся оценок. Получается среднее арифметическое}
writeln('Итоговая оценка ',sum:7:2) {выводим результат}
end.
Другие вопросы из категории
Читайте также
Дан массив А1,.......Аn. найти максимальный и минимальный элементы и поменять их местами. Вот задача которую я делал:
program zadacha;
const
k=50;
var
a:array[1..k] of integer;
n,i:1..k;
c,v,max,min,prom:integer;
begin
for i:=1 to n do begin (здесь выскакивает ошибка о проверки диапазона)
a[i]:=random(50);
write(a[i],' ');
end;
max:=a[1];
min:=a[1];
for i:=1 to n do begin
if a[i]>max then begin
max:=a[i];
c:=i;
end;
if a[i]<min the begin
min:=a[i];
v:=i;
end;
end;
writeln('max=',max,'min=',min);
prom:=max; (вот с этой строчки и до конца помогите решить)
max:=min;
min:=prom;
writeln;
writeln('Полученный массив');
for i:=1 to n do
write(a[i], ' ');
readln;
end.
1. модифицируйте предыдущий пример, так чтобы программа определяла максимальный и минимальный элемент массива
2. Напишите программу, которая бы определяла среднее арифметическое значение элементов массива (вещественная величина типа real)
Начало:
var a: array[1..10] of integer;
i: integer;
begin
а как дальше?
Предыдущий пример:
var a: array[1..10] of integer;
i: integer;
begin
randomize;
for i:=1 to 10 do
begina[i]:=random(40)-20;
end;
for i:=1write(a[i]:4);
end.
2. количество нулевых элементов.