Программа на Паскале поиска максимума и минимума в массиве
Составим программу на Паскале, но в эту программу мы внесем еще некоторые новые детали. Хотелось бы в итоге работы программы получить не номера, а названия команды-победителя и команды, занявшей последнее место. Но для этого названия всех команд чемпионата должны быть организованы в массив и введены как исходные данные. В программе такой массив назван Team[1. . 16] и тип его элементов объявлен как string.
String — это строковый тип данных Паскаля. Величина такого типа может принимать значение, представляющее собой произвольную символьную последовательность (в том числе и из русских букв), длина которой не должна превышать 255. Для названий команд это вполне подходящие условия.
ProgramPremier_liga;
varВ: array[1..16] ofinteger;
Team: array[1..16] of string;
MaxB, MinB, Nmax, Nmin, I: integer;
Begin
{Ввод названий команд и набранных ими очков}
writeln('Введите названия команд и полученные ими очки');
forI:=lto16 do
Begin
write(I,' Название: '); Readln(Team[I]);
write('Очки: '); Readln(В[I])
end;
{Поиск наибольшего и наименьшего значений и их номеров}
МахВ:=В[1]; Nmax:=l; MinB:=В[1]; Nmin:=l;
for I:=2 to16 do
Begin
{Выбор максимума}
ifВ[I]>MaxBthen
Begin
МахВ:=B[I];
Nmax:=1
end;
{Выбор минимума}
ifB[I]<MinB then
Begin
MinB:=B[I];
Nmin:=1
End
end;
{Вывод результатов}
writeln('Команда-победитель чемпионата ', Team[Nmax], 'набрала ', МахВ, 'очков');
writeln('На последнем месте',Team[Nmin] , ' с ',MinB,'очками')
End.
Обратите внимание на то, как определяется название команды-победителя и команды, занявшей последнее место. Это делается по значениям индексов максимального и минимального элементов массива В:Nmax и Nmin. В переменной Team[Nmax] находится название чемпиона, а в переменной Team[Nmin] — название последней команды в чемпионате.
При выполнении программы на экране будет отражено следующее:
Введите названия команд и полученные ими очки
1 Название: ДИНАМО
Очки: 46
2 Название: ЗЕНИТ
Очки: 56
3 Название: КРЫЛЬЯ СОВЕТОВ
Очки: 42
………………….
16 Название : ШИННИК
Очки: 47
Команда-победитель чемпионата ЦСКА набрала 59 очков На последнем месте ЧЕРНОМОРЕЦ с 24 очками
Коротко о главном
Алгоритм выбора максимального (минимального) значения в массиве имеет структуру цикла с вложенным неполным ветвлением.
Для обработки последовательностей символов в Паскале имеется строковый тип данных: string.
Вопросы и задания
1. Придумайте собственные примеры данных, которые можно было бы представить в виде строкового массива. Подготовьте сообщение.
2. Представьте себе, что две команды набрали по 59 очков. Например, ЦСКА и ЗЕНИТ. Номер какой команды был бы выведен в качестве результата?
3. При условии из предыдущего задания определите, какие будут выведены результаты, если в операторе ветвления, где отбирается максимальное значение, заменить знак отношения «>» на «>=»?
4. Введите в компьютер программу Premier_liga. Выполните ее, получите результаты. Сравните с результатами, приведенными в параграфе.
5. По условиям чемпионата 2003 года из премьер-лиги выбывают две последние в турнирной таблице команды. Составьте программу, определяющую обе команды, выбывающие из премьер-лиги.
ЕК ЦОР: часть 2, заключение, § 6.1. ЦОР № 6, 7.
§21
Сортировка массива
Основные темы параграфа:
■ алгоритм сортировки методом пузырька;
■ программа на Паскале сортировки методом пузырька.
Известно, что данные в электронной таблице можно сортировать по возрастанию или убыванию значений в столбцах. Для задачи с таблицей футбольного чемпионата естественным действием была бы сортировка по убыванию значений набранных очков. Тогда вверху таблицы останется победитель чемпионата, а в нижней строчке — команда, занявшая последнее место. На рисунке 2.15 показана такая отсортированная таблица. Из нее мы получаем исчерпывающую информацию об итогах чемпионата: кто какое место занял.