Наиболее эффективно множество может быть использовано для замены операторов if, например, для проверки наличия некоторого ответа в списке разрешенных.
Приведенная ниже программа ввода строки символов, содержащей латинские буквы, цифры, пробелы с контролем правильности введенных символов, может служить примером использования множеств.
program EX;
Var
Str:string;
L:byte;
t: boolean;
Begin
writeln ('Введите строку');
readln (Str);
L:=length (Str); {число введенных символов}
t:=L>0: {true, если не пустая строка}
while t and (L>0) do
Begin
T: =Str [L] in |'0'.'9' 'A'..'Z' 'a'..'z'];
{проверка допустимости символа}
dec (L) {предыдущий символ}
end;
If t then writeln ('Правильная строка')
Else writeln ('Неправильная строка')
End.
ВОПРОСЫ И УПРАЖНЕНИЯ
1. Сколько различных значений может принимать переменная AS, имеющая описание var AS: set of 0..2?
2. Эквивалентны ли выражения р in [1,2, 5] и (р=2) or (р=2) or (р=5)?
3. С использованием операции in организовать проверку текущего числа цифр в строке s, описанной как
var s: string[62].
4. Вычислить:
a. [1, 4, 7] + [2, 3] + [5, 6];
|
|
b. [1, 4, 7] * [3, 5J;
c. [1,4, 7] - [2, 5]:
d. [2..10] - [4, 6]-[2..12] * [8..15].
5. Упростить (А, В - множества):
a. А * В-А;
b. А - (А - В);
c. (А + В) - (А - В) - (В - А).
6. Определить значения:
a.[2]=[2, 2, 2]:
b. [1, 3]<>[3, 1];
c. [1.2.3]=[1..3]:
d.['a','b'] = ['b'..'a'].
7. Дан текст из строчных латинских букв. Составить программу определения количества гласных букв (а, е, i, о. u), встречающихся в тексте.