Получение средней оценки 10 фигуристов - Pascal
Формулировка задачи:
Реализовать программу на языке Паскаль для получения средней оценки 10 фигуристов, 5-ю экспертами по трем критериям, а также найти победителей 1-3 место и средний балл на соревнованиях по каждому из критериев.
Помогите, пожалуйста
Решение задачи: «Получение средней оценки 10 фигуристов»
textual
Листинг программы
const m=10; n=5; p=3;
type
TPerson = record
Name: String[63];
Score: array [1..p,0..n] of Real;
Sum: Real;
end;
var
a: array [1..m] of TPerson;
b: array [1..m] of Integer;
s: array [1..p] of Real;
i, j, k, q: Integer; t: Real;
begin
WriteLn('Ввод оценок');
for i:=1 to m do with a[i] do begin
WriteLn('Фигурист ',i);
Write(' имя: '); ReadLn(name);
for j:=1 to n do begin
Write(' оценки эксперта ',j,': ');
for k:=1 to p do Read(Score[k,j]);
end; ReadLn; {Sum:=0;}
for k:=1 to p do begin
t:=0; for j:=1 to n do t:=t+Score[k,j];
Sum:=Sum+t; Score[k,0]:=t/n;
end; Sum:=Sum/n;
end;
{ средний балл }
for k:=1 to p do begin
t:=0; for i:=1 to m do with a[i] do for j:=1 to n do t:=t+Score[k,j];
s[k]:=t/(m*n);
end;
{ сортировка }
for i:=1 to m do b[i]:=i;
i:=m;
repeat
k:=1;
for j:=1 to i-1 do
if a[b[j]].Sum<a[b[j+1]].Sum then begin
k:=j; q:=b[j]; b[j]:=b[j+1]; b[j+1]:=q;
end;
i:=k;
until k=1;
{ результаты }
WriteLn('Турнирная таблица:');
for i:=1 to m do with a[b[i]] do begin
Write(i:2); for k:=1 to p do Write(Score[k,0]:6:2); WriteLn(' ',Name);
end;
WriteLn('Средние баллы:');
Write('':2); for k:=1 to p do Write(s[k]:6:2); WriteLn;
end.
Объяснение кода листинга программы
- Объявляются и инициализируются константы
m(равной 10),n(равной 5) иp(равной 3). - Определяется тип записи
TPersonс полямиNameтипаString[63],Scoreмассива размерностиpнаnиз вещественных чисел иSumтипаReal. - Объявляются переменные:
a- массив изmэлементов типаTPerson;b- массив изmэлементов типаInteger;s- массив изpэлементов типаReal;i,j,k,q- целочисленные переменные;t- вещественная переменная.
- Запускается блок кода.
- Выводится сообщение
Ввод оценок. - Начинается цикл с
iот 1 доm. В каждой итерации:- Запрашивается имя фигуриста
i. - Запрашиваются оценки экспертов для каждого фигуриста.
- Осуществляется расчет суммы оценок и среднего балла.
- Запрашивается имя фигуриста
- Выполняется расчет среднего балла для каждого эксперта.
- Выполняется сортировка фигуристов в массиве
aпо убыванию суммарных баллов. - Выводится турнирная таблица с результатами имен каждого фигуриста и их средние баллы за каждую оценку.
- Выводятся средние баллы всех фигуристов.