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; { текущий -> в следующий }
{ меняем местами и названия команд }
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
Болельщики вправе оспорить результат, но я им доволен.