Язык программирования Pascal. Множества. Типизированные константы. Васильев В.В - 5 стр.

UptoLike

5
Научимся проверять , входят ли элементы одного множества в другое.
Задача 2. Пусть дан текст. Верно ли, что в нем имеются буквы , входя-
щие в слово, задаваемое пользователем?
Словом и текстом будем считать последовательность символов, окан -
чивающуюся точкой . Параллельно с вводом слова сформируем множество его
букв. Буква слова включается во множество букв, если она встречается в слове
впервые. После завершения ввода слова из множества букв слова исключается
точка. Почему?
Параллельно с вводом символов текста, проверяется наличие вводимых
символов во множестве букв слова. Если проверка даст положительный ре-
зультат, то логической переменной flag (хранящей ответ на вопрос задачи )
присваивается значение true.
Program Words1;
Uses crt;
Const Max_Len = 100; {максимальная длина слов}
eot = '.'; {признак конца ввода}
Type Word = array [1..Max_Len] of char; {тип слова}
Var Sl,Text: Word; {слово и текст}
Letters: set of char; {множество букв слова}
i: 0..Max_Len; {счетчик букв}
flag: Boolean; {признак наличия букв слова в тексте}
Begin
Textbackground(7); Textcolor(blue); Clrscr;
{Ввод слова и инициализация множества букв слова}
writeln('Введите слово (в конце поставьте точку): ');
i:=0; Letters:=[];
repeat
inc(i); read(Sl[i]);
if Letters-[Sl[i]]=Letters
then Letters:=Letters+[Sl[i]]
until (i=Max_Len) or (Sl[i]=eot);
Letters:=Letters-[eot];
{Ввод текста и проверка вхождения букв слова в текст}
writeln('Введите текст (в конце поставьте точку): ');
i:=0; flag:=false;
repeat
inc(i); read(Text[i]);
if (not flag) and (Text[i] in Letters)
then flag:=true;
until (i=Max_Len) or (Text[i]=eot);
if flag then writeln('В тексте есть буквы слова! ')
else writeln('В тексте нет букв слова! ');
readkey
End.{Words1}
Приведем второй способ решения данной задачи . Параллельно с вводом