Сравнение множеств. Операции отношения

Для сравнения множеств используют­ся обычные операции:

A =B — равенство (совпадение) двух множеств;

A <>B — несовпадение двух множеств;

A >=B — элементы множества В принадлежат множ. А;

A <=B — элементы множества A принадлежат множ. B;

Операция определения принадлежности элемента множеству

Эта логическая операция обозначается служебным сло­вом In. Результат операции — значение True, если элемент принадлежит множеству, и False — в противном случае.

Примеры:

D 5 In [3.. 7] дает значение True, так как 5 є [3.. 7];

'a' In ['A'.. 'Z'] дает значение False, буквы 'а' нет среди больших латинских букв.

Операцию проверки принадлежности удобно использовать для исключения более сложных проверок.

Например, оператор вида

If (ch='ar) or (ch='b') or (ch='x') or (ch='yf)

Then s;

переписывается в более компактной и наглядной форме:

If ch In ['а', 'b', 'x', 'у' ] Then s.

Пример определения и задания множеств:

Type
digitChar = Set Of ‘0’.. ‘9’;
digit = Set Of 0.. 9;
Var
s1, s2, s3: digitChar;
s4, s5, s6: digit;
......
s1:= [‘1’, ‘2’, ‘3’];
s2:= [‘3’, ‘2’, ‘1’];
s3:= [‘2’, ‘3’];
s4:= [0..3, 6];
s5:= [4, 5];
s6:= [3..9];

Над множествами определены следующие операции:

Операция Смысл Пример* Результат
* пересечение множеств s1*s3 [‘1’,‘2’, ‘3’]
+ объединение множеств s4+s5 [0..6]
- разность множеств s2-s3 [‘1’]
= True, если множества эквивалентны s1=s2 s1=s3 True False
<> True, если множества неэквивалентны s1<>s2 s1<>s3 False True
<= True, если первое множество содержится во втором s5<=s6 True
>= True, если второе множество содержится в первом s2>=s3 True
In проверка принадлежности значения выражения, стоящего слева множеству, стоящему справа 7-5 In s4 True

Пример 1

Организовать ввод элементов трех множеств A, B, C. Вычислить и напечатать множества A + B, B * C, C - A.

Program CalcSet;
Type SetChar= Set Of Char;
Var A, B, C: SetChar;
{Процедура ввода множества}
Procedure EnterSet(Var D: SetChar);
Var ch: Char;
Begin
Writeln(‘Введите элементы множества, точка - конец ввода’);
Read(ch);
D:=[];
While ch<>‘.’ Do
Begin D:= D + [ch]; Read(ch) End;
End;{EnterSet}
{Процедура вывода множества}
Procedure PrintSet(D: SetChar);
Var i: Byte;
Begin For i:= 0 To 255 Do
If Chr(i) in D Then Writeln(Chr(i))
End;{PrintSet}
Begin {Основная программа}
Writeln(‘Введите элементы множества A’);
EnterSet(A);
Writeln(‘Введите элементы множества B’);
EnterSet(B);
Writeln(‘Введите элементы множества C’);
EnterSet(C);
PrintSet(A+B); PrintSet(B*C); PrintSet(C-A)
End.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: