Читайте также:
|
|
При работе с множествами допускается использование следующих операций:
П отношения (=, <>, >=, <=);
О объединения множеств (+);
О пересечения множеств (*);
П разности множеств (—);
G проверка принадлежности элемента множеству (in).
Рассмотрим каждую из операций в отдельности.
П Операция "равно" (=). Два множества А л Л считаются равными, если они состоят из одних и тех же элементов. Порядок следования элементов в сравниваемых множествах значения не имеет (табл. 10.1).
Таблица 10.1. Примеры операции "равно"
"\ Операция "не равно" (<>). Два множества А и В считаются не равными, если они отличаются по количеству элементов или по значению хотя бы одного элемента (табл. 10.2).
Таблица 10.2. Примеры операции "не равно"
П Операция "больше или равно" (>=). Эта операция используется для определения принадлежности одного множества другому. Результат операции А>~В равен true, если все элементы множества В содержатся в множестве А. В противном случае результат равен false (табл. 10.3).
3 Операция "меньше или равно" (<=). Операция используется аналогично предыдущей операции, но результат выражения А<=В равен true, если все элементы множества А содержатся в множестве В. В противном случае результат равен false (табл. 10.4).
" V
Таблица 10.4. Примеры операции "меньше или равно"
О Операция in. Эта операция используется для проверки принадлежности какого-либо значения указанному множеству. Она обычно применяется в условных операторах (табл. 10.5).
Таблица 10.5. Примеры операции in
Операция in позволяет эффективно и наглядно производить сложные проверки условий, заменяя иногда десятки других операций. Например,
СЛОЖНОе условие if (a=l) or (а=2) or (a=3) or (a=4) or (a=5) then...
можно заменить более коротким выражением if a in [1.. 5] then...
Часто операцию in пытаются записать с отрицанием: х not in m. Такая запись является ошибочной, правильная инструкция имеет вид: not(x in m)
П Объединение множеств (+). Объединением двух множеств является третье множество, содержащее элементы обоих множеств (табл. 10.6).
Таблица 10.6. Примеры операции объединения множеств
П Пересечение множеств (*). Пересечением двух множеств является третье множество, которое содержит элементы,* входящие одновременно в оба множества (табл. 10.7).
Таблица 10.7. Примеры операции пересечения множеств
П Разность множеств (—). Разностью двух множеств является третье множество, которое содержит элементы первого множества, не входящие во второе множество (табл. Ю.8).
Таблица 10.8. Примеры операции разности множеств
Листинг 10.1 содержит небольшую программу, демонстрирующую операции над множествами. Множества чисел заполнены следующим образом: D1 -четными числами 2, 4, 6, 8; множество D2 — числами О, 1, 2, 3, 5; множество D3 — нечетными числами 1, 3, 5, 7, 9. После этого над множествами выполнены операции объединения, разности, пересечения.
; Листинг 10.1, Операции над множествами
type digits=set of 0.. 9;
var dl,d2,d3,d: digits;
begin
dl:=[2,4,6,8]; (заполнение множеств }
d2:=[0.. 3,5];
d3:-[l,3,5,7,9J;
d:=dl+d2; { объединение множеств dl и d2)
d:=d+d3; { объединение множеств d и d3 }
d:=d~d2; { разность множеств d и d2)
d:=d*dl; { пересечение множеств d и dl }
end.
!
Так как в Turbo Pascal отсутствуют средства ввода/вывода элементов множества, то действие программы можно проверить, исполняя ее по шагам и наблюдая текущие значения переменных dl, 62, d3, d в окне просмотра (см. приложение 1).
Тем не менее, нетрудно написать процедуру для вывода элементов множества. Например, процедура для вывода множества символов может иметь следующий вид:
type charset=set of char; procedure writeset(a:charset); var с:char; begin
for c:=chr(0) to chr(255) do
if с in a then write(c,' '); writeln; end;
Обратите внимание — значения элементов множества с помощью этой процедуры всегда будут выводиться в упорядоченном виде. Это не удивительно, т. к. в памяти они находятся в упорядоченном виде.
Рассмотрим следующий пример, демонстрирующий проверку принадлежности элемента множеству. Пусть требуется в предложении, введенном с клавиатуры, определить количество гласных букв. Программа для решения этой задачи приводится в листинге 10.2.
\ Л истин); 10.2. Подсчет количества гласных букв в предложении
const
glasn=[ 'а', 'е', 'и', 'о1, 'у'/ 'ьг', тэ', 'ю1, 'я',
•и' ' F ' ' И ' ' Г)' ' V ' ' W' ' Ч ' ' HV ' Я' 1 •
г\, И, г VI f w, J I Е* t -Э г № r /1J/
var s:string; p,i:integer; begin
write('Введите строку текста: '); readln(s);
p:=0;
for i:=l to length(s) do
if s[i] in glasn then p:=p+l;
writelnf'B строке ',р, ' гласных букв'); readln; end.
Комментарии j
В программе используется константа glasn, представляющая множество гласных букв. Проверка принадлежности символов предложения множеству гласных букв записывается операцией in. Разумеется, для решения этой задачи можно было бы записать вспомогательную строку из гласных букв и использовать функцию роз для поиска буквы в этой строке. Однако вариант с множеством предпочтительней, т. к. текст получился нагляднее, кроме того, проверка на принадлежность множеству выполняется намного быстрей, чем поиск символа в строке.
Формирование
Дата добавления: 2015-11-14; просмотров: 61 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Понятие множества | | | Случайных неповторяющихся чисел |