begin
{ заполняем массив случайным образом }
Randomize;
for i:=1 to CSize do Golds[i]:= 500 + Random(500);
{ сортируем }
BubbleSort(Golds);
Writeln('По справедливости:');
for i:=1 to (CSize div 2) do begin
{ два куска по отдельности }
Write(i:2, Golds[i]:5,' + ',Golds[CSize+1-i]:3,' = ');
{ сумма двух кусков }
Writeln(Golds[i]+Golds[CSize+1-i] :4);
end;
Readln;
end.
Вот результат одной из таких делёжек:
По справедливости:
1 506 + 975 = 1481
2 556 + 967 = 1523
3 587 + 954 = 1541
4 629 + 916 = 1545
5 691 + 876 = 1567
6 694 + 872 = 1566
7 749 + 845 = 1594
8 751 + 800 = 1551
Здесь самый легкий и самый тяжелый слитки отличаются почти вдвое: 506 и 975 граммов. Но пары слитков, доставшихся пиратам, отличаются по весу незначительно.
Закаленные морскими приключениями, вернемся к сортировке футбольных клубов (задача поставлена в главе 39, помните?). Что мы будем сортировать? Набранные очки? Да, но их надо как-то привязать к названиям команд.
Поступим так. Объявим два массива: один (числовой) – для набранных очков, другой (строковый) – для названий клубов. При вводе данных элементы двух массивов будут соответствовать друг другу, поскольку имена команд и набранные ими очки вводятся одновременно. Затем, в ходе сортировки, переставляя элементы с очками, будем менять местами и соответствующие им элементы с названиями команд. Так имена команд последуют за очками, заработанными командами. Все это потребует небольших переделок в процедуре сортировки.
Впрочем, потребуется ещё одно мелкое изменение. Если при сортировке золотых слитков мы добивались возрастающего порядка, то теперь нужен противоположный, убывающий порядок сортировки. Как его добиться? Очень просто: изменим условие сравнения соседних элементов на противоположное. Вот собственно и все, осталось лишь показать программу «P_41_3».
{P_41_3 – Футбольный чемпионат }
const CSize = 16; { количество команд }
{ объявление типов для массивов }
type TAces = array [1..CSize] of integer; { тип для очков }
TNames = array [1..CSize] of string; { тип для названий }
var Aces : TAces; { набранные очки }
Names: TNames; { названия команд }
{ Процедура "пузырьковой" сортировки очков с именами команд }