Примеры программ с использованием множеств
При разработке алгоритмов и программ с множествами необходимо учесть, что Паскаль не обеспечивает ввод или вывод множеств непосредственно с помощью операторов Read или Write. Формирование множества, элементы которого вводятся с клавиатуры, можно выполнить, используя операцию присоединения, следующим образом.
Один из алгоритмов ввода множества 1. Множество: =[ ]. 2. Повторять 2.1. Ввести элемент; 2.2. Множество: = Множество + [элемент]. Пока не надоест.
Вывод содержимого множества осуществляется путем тестирования. При этом в цикле перечисляются все возможные значения его элементов и те из них, которые входят в множество, выводятся на экран.
Один из алгоритмов вывода множества 1. Для Элемента от Первого_значения до Последнего_значения выполнить Если Элемент принадлежит (In) Множеству, то Вывести Элемент.
Рассмотрим примеры алгоритмов и программ, использующих множества.
Пример 1. Сформировать и вывести на экран множество из n символов латинского алфавита (n< 20). Если вводимая буква уже есть в множестве, выдать соответствующее сообщение.
Program Mnog_Sim; Const N=20; Var S: Set Of Char; B: Char; I: Integer; Begin S: = []; For I: =1 To N Do Begin Writeln (’Введите букву’); Readln(B); If B In S Then Writeln(’Буква ’, B, ’ уже есть’) Else S: =S+[B]; End; Writeln(’Буквы, входящие в множество’); For B: =’A’ To ’z’ Do If B In S Then Write(B: 2); End.
Обратите внимание, что вводимые буквы могут быть и прописными, и строчными, поэтому при выводе в цикле For параметр цикла принимает все значения для букв латинского алфавита от A до z.
Пример 2. Используя множество гласных букв, подсчитать количество гласных в предложении. Предложение и множество гласных ввести с клавиатуры. Program Glasn; Var P: String; {предложение} Gl: Set Of Char; {множество гласных} B: Char; K, I, N: Integer; Begin Gl: = []; B: = ’#’; While B < > ’! ’ do Begin Writeln (’Введите гласную, конец ввода –! ’); Readln(B); If B < > ’! ’ then Gl: = Gl+[B]; End; Writeln (’Введите предложение’); Readln(P); K: = 0; N: = Length(P); For I: = 1 To N Do If P[I] In Gl Then K: = K+1; Writeln (’Количество гласных в предложении - ’, K); WriteLn(’Нажмите клавишу ENTER...’); ReadLn; End. Пример 3. Составить программу продажи билетов на пароход. Пусть места на пароходе нумеруются (для простоты) от 1 до n (n < 250). Покупатель заказывает номера мест. Если они свободны, то ему выдаются билеты, и номера мест исключаются из числа свободных. В противном случае предлагаются номера свободных мест. Если все билеты проданы, то начинается путешествие.
|