Песни о Паскале | страница 172
>{P_41_3 – Футбольный чемпионат }
>const CSize = 16; { количество команд }
> { объявление типов для массивов }
>type TAces = array [1..CSize] of integer; { тип для очков }
> TNames = array [1..CSize] of string; { тип для названий }
>var Aces : TAces; { набранные очки }
> Names: TNames; { названия команд }
> { Процедура "пузырьковой" сортировки очков с именами команд }
>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
Болельщики вправе оспорить результат, но я им доволен.
• Расположение данных в порядке возрастания или убывания называется сортировкой.
• Простейший алгоритм сортировки массива – «пузырьковая» сортировка. Она состоит в сравнении и перестановке соседних элементов массива, при этом организуются два вложенных цикла.
А) Напишите программу для сортировки фамилий учеников в алфавитном порядке (фамилии берутся из файла). Программа должна сортировать их как по возрастанию, так и по убыванию фамилий, – на выбор пользователя.