Поиск и сортировка - 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.

Объяснение кода листинга программы

  1. Переменная n инициализируется значением 10.
  2. Создается тип данных res, который представляет собой запись с тремя полями: name (имя), ob, pr, kor (оценки).
  3. Создаются переменные fig, r, p, i, j, k, t, которые будут использоваться для хранения данных.
  4. Запускается цикл for, который выполняется n раз. Внутри цикла считываются данные от пользователя для каждого элемента массива fig.
  5. Внутри цикла for считываются оценки для каждого элемента массива fig.
  6. Создается массив p, который будет использоваться для хранения индексов элементов массива fig.
  7. Создается массив r, который будет использоваться для хранения сумм оценок для каждого элемента массива fig.
  8. Запускается второй цикл for, который выполняется n-1 раз. Внутри цикла сравниваются суммы оценок для каждого элемента массива fig. Если текущая сумма больше следующей, то происходит обмен их местами.
  9. После завершения второго цикла for происходит пересчет индексов элементов массива fig с помощью переменной k.
  10. Выводится сообщение Список:.
  11. Запускается цикл for, который выполняется n раз. Внутри цикла выводится имя текущего элемента массива fig и его оценка.
  12. Выводится сообщение Нажмите Enter....
  13. Программа ожидает ввода пользователя.
  14. Когда пользователь нажимает Enter, программа завершается.

Оцени полезность:

11   голосов , оценка 4.545 из 5
Похожие ответы