Песни о Паскале | страница 158
• символ каждого сорта входит в пароль не менее двух раз, некоторые символы могут повторяться;
• все символы пароля уникальны (примените множество);
• символы одного сорта не соседствуют, например: «Pa7sCaL5», уникальность символов не требуется;
• символы одного сорта не соседствуют и все символы уникальны.
Д) Напишите четыре булевы функции, проверяющие, является ли введенная пользователем строка правильно сформированным паролем согласно условиям предыдущей задачи.
Глава 39
Командная игра (массивы)
В чём сила компьютеров? В умении стремительно перемалывать огромные объёмы данных: сотни, тысячи, миллионы элементов! Под элементами данных мы разумеем числа, строки и тому подобное. Обратимся и мы к этой способности компьютера. Нет, с миллионом элементов погодим, начнем всего с нескольких: рассмотрим, к примеру, турнирную таблицу чемпионата.
Вот задача для болельщика: отсортировать команды в турнирной таблице чемпионата по убыванию набранных ими очков. Команд немного, всего 16. После каждого тура количество очков меняется, и таблица сортируется заново. Корпеть над этим вручную? – это не для нас! Итак, будущая программа должна принимать с клавиатуры очки, набранные командами, и распечатывать команды в порядке убывания этих чисел. При этом набранные очки мы будем вводить всегда в одном и том же порядке.
Сделаем это сначала для двух команд, пусть ими будут «Динамо» и «Спартак». Сортировка двух команд – что может быть проще?
>{ ввод и сортировка двух команд (в программе 14 строк) }
>var T1, T2 : integer;
>begin
> Readln (T1, T2); { Ввод очков для «Динамо» и «Спартак» }
> if T1>T2
> then begin
> Writeln('1.Динамо');
> Writeln('2.Спартак');
> end
> else begin
> Writeln('1.Спартак');
> Writeln('2.Динамо');
> end;
> Readln;
>end.
Здесь для каждой из команд отведена переменная, хранящая набранные очки: T1 – для «Динамо» и T2 – для «Спартака». Вариантов расстановки всего два, поэтому и программа очень проста – всего 14 строк, не считая комментария.
Теперь добавим в чемпионат команду «Зенит». Вариантов расстановки стало втрое больше – шесть, и программа заметно усложнилась, вот она.
>{ сортировка трех команд (в этой программе 45 строк) }
>var T1, T2, T3 : integer;
>begin
>Readln (T1, T2, T3); { «Динамо», «Спартак», «Зенит» }
>if (T1>T2) and (T1>T3)
>then begin
> Writeln('1.Динамо');
> if T2>T3
> then begin
> Writeln('2.Спартак');
> Writeln('3.Зенит');