Теоретический материал (Паскаль)

Сортировка записей

Рассмотрите решение задачи, наберите ее на компьютере, протестируйте, найдите в программе недостатки и устраните их.

Задача 1. Во время лыжных соревнований в центральный судейский компьютер поступают данные в следующем виде: номер участника, его фамилия, страна и показанный результат. Составить программу, которая после ввода  информации выдает таблицу результатов участников в порядке ухудшения.

Program Ski;
Uses
  Crt;
Type
  inf= record
      num: byte;
      name,strana: string[30];
      rez: real;
    end;
Var
  m: array [1..100] of inf;
  i, j, k : integer;
Procedure Input;
Begin
  write('Введите количество участников соревнований: ');
  readln(k);
  for i:=1 to k do
    with m[i] do
      begin
        write('Введите номер участника: ');
        readln(num);
        write('Введите фамилию: ');
        readln(name);
        write('Какую страну представляет: ');
        readln(strana);
        write('Показанный результат: ');
        readln(rez);
        writeln;
      end;
End;
Procedure Vich;
Var
  o: real;
  n, s: string;
  nm: byte;
Begin
  ClrScr;
  for i:=1 to k-1 do
    for j:=i+1 to k do
      if m[j].rez<m[i].rez
        then
   
      begin
            o:=m[j].rez;{Меняем результаты}
            m[j].rez:=m[i].rez;
            m[i].rez:=o;
            nm:=m[j].num;{Меняем номера}
            m[j].num:=m[i].num;
            m[i].num:=nm;
            n:=m[j].name;{Меняем фамилии}
            m[j].name:=m[i].name;
            m[i].name:=n;
            s:=m[j].strana; {Меняем страны}
            m[j].strana:=m[i].strana;
            m[i].strana:=s;
          end;
End;
Procedure Output;
Begin
  for i:=1 to k do
    with m[i] do
      begin
        writeln(i,'-ое место занял:');
        writeln('участник под номером: ',num);
        writeln('Его фамилия: ',name);
        writeln('Представляет страну : ',strana);
        writeln('Показанный результат: ',rez:3:1);
        writeln;
      end;
End;
Begin
  ClrScr;
  Input;
  Vich;
  Output;
  ReadKey;
End.

Задание. Напишите программу для сортировки записей по выбранному Вами полю и вывода отсортированного массива записей на экран. Сортировку осуществляйте с помощью одного из предложенных способов:

  • сортировка вставкой;
  • сортировка выбором;
  • сортировка методом простого обмена;
  • сортировка с помощью рекурсии.