procedure BubbleSort2(var arg1: TAces; var arg2: TNames);

var i, j, t: Integer;

      s: string;

begin

for i:= 1 to CSize-1 do { внешний цикл }

      for j:= 1 to CSize-i do { внутренний цикл }

      { если текущий элемент меньше следующего …}

      if arg1[j] < arg1[j+1] then begin

      { то меняем местами соседние элементы }

      t:= arg1[j];       { временно запоминаем }

      arg1[j]:= arg1[j+1]; { следующий -> в текущий }

      arg1[j+1]:= t;       { текущий -> в следующий }

      { меняем местами и названия команд }

      s:= arg2[j];       { временно запоминаем }

      arg2[j]:= arg2[j+1]; { следующий -> в текущий }

      arg2[j+1]:= s;       { текущий -> в следующий }

      end;

end;

var i: integer;

begin       { главная программа }

{ Вводим названия команд и набранные очки }

for i:=1 to CSize do begin

      Write('Название команды: '); Readln(Names[i]);

      Write('Набранные очки: '); Readln(Aces[i]);

end;

BubbleSort2(Aces, Names); { сортируем }

Writeln('Итоги чемпионата:');

Writeln('Место       Команда       Очки');

for i:=1 to CSize do

      Writeln(i:3,' ':3, Names[i], Aces[i]:20-Length(Names[i]));

Readln;

end.

Спецификатор ширины поля в операторе печати задан выражением.

      20 – Length(Names[i])

Здесь перед колонкой с очками будет тем больше пробелов, чем короче название команды, – так выравниваются колонки таблицы.

Для проверки программы я ввел наобум имена четырех команд нашего чемпионата и очки, якобы заработанные ими (количество команд CSize установил равным 4), и вот что у меня вышло.

Итоги чемпионата:

Место Команда       Очки

1 Локомотив       55

2 Крылья Советов 54

3 Спартак       47

4 Зенит       43

Болельщики вправе оспорить результат, но я им доволен.

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату