Поиск и сортировка - Turbo Pascal
Формулировка задачи:
известна информация о 10 спортсменах фигуристах. его имя и оценки, полученные спортсменом по обязательной, произвольной и по короткой программе. вывести спортсменов в порядке возрастания полученных баллов.
помогите, пожалуйста, решить
Решение задачи: «Поиск и сортировка»
textual
Листинг программы
const n=10; type res = record name: String[128]; ob, pr, kor: Real; end; var fig: array [1..n] of res; r: array [1..n] of Real; p: array [1..n] of Integer; i, j, k, t: Integer; begin for i:=1 to n do with fig[i] do begin Write('Фамилия: '); ReadLn(name); Write('Оценки (обязательная, произвольная, короткая): '); ReadLn(ob,pr,kor); p[i]:=i; r[i]:=ob+pr+kor; end; for i:=1 to n-1 do begin k:=i; for j:=i+1 to n do if r[p[k]]>r[p[j]] then k:=j; t:=p[i]; p[i]:=p[k]; p[k]:=t; end; WriteLn('Список:'); for i:=1 to n do with fig[p[i]] do WriteLn(name:30,' ',r[p[i]]:0:1); Write('Нажмите Enter...'); ReadLn; end.
Объяснение кода листинга программы
- Переменная
n
инициализируется значением 10. - Создается тип данных
res
, который представляет собой запись с тремя полями:name
(имя),ob
,pr
,kor
(оценки). - Создаются переменные
fig
,r
,p
,i
,j
,k
,t
, которые будут использоваться для хранения данных. - Запускается цикл
for
, который выполняетсяn
раз. Внутри цикла считываются данные от пользователя для каждого элемента массиваfig
. - Внутри цикла
for
считываются оценки для каждого элемента массиваfig
. - Создается массив
p
, который будет использоваться для хранения индексов элементов массиваfig
. - Создается массив
r
, который будет использоваться для хранения сумм оценок для каждого элемента массиваfig
. - Запускается второй цикл
for
, который выполняетсяn-1
раз. Внутри цикла сравниваются суммы оценок для каждого элемента массиваfig
. Если текущая сумма больше следующей, то происходит обмен их местами. - После завершения второго цикла
for
происходит пересчет индексов элементов массиваfig
с помощью переменнойk
. - Выводится сообщение
Список:
. - Запускается цикл
for
, который выполняетсяn
раз. Внутри цикла выводится имя текущего элемента массиваfig
и его оценка. - Выводится сообщение
Нажмите Enter...
. - Программа ожидает ввода пользователя.
- Когда пользователь нажимает Enter, программа завершается.