Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример работы с множествами




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

Операции над множествами

Значения переменных иди констант множественного типа задаются с помощью конструктора, состоящего из квадратных скобок, в которых перечисляются элементы множества или указывается диапазон их значений.

const empty = [];

Digits = [1,2,5,11,64,64,4,3];

var alphabet:set of char; ch: char;

begin alphabet:=[‘A’..’Z’,’a’..’z’];

ch:=’t’;

alphabet:=[ch];

Отсутствие элементов в квадратных скобках означает пустое множество. Присваивание допустимо только в том случае, если все элементы множественного выражения относятся к базовому типу.

Над множествами языка Паскаль можно выполнять те же операции, что и над математическими множествами, то есть находить их объединение, пересечение, разность.

Если S1 и S2 – это константы или переменные множественного типа, то в Паскале:

S1 + S2 – объединение множеств;

S1 * S2 – пересечение множеств;

S1 – S2 – разность множеств.

К множествам можно применять 5 операция отношения:

S1 = S2 – равенство множеств;

S1 <> S2 – неравенство множеств;

S1 <= S2 – включение, результат true, если S1 является подмножеством S2

S1 >= S2 – включение, результат true, если S2 является подмножеством S1

E in S1 – вхождение в множество, результат true, если Е является элементом S1

Пример var ch:char; … if ch in alphabet then …

Такая операция выполняется быстро и может использоваться для исключения сложных проверок вида:

If (ch=’A’) of (ch=’E’) or … then …

Чтобы добавить во множество какой-нибудь элемент, его следует объединить с множеством, состоящим из единственного элемента:

Alphabet:=alphabet + [ch];

В ВР для добавления можно также использовать процедуру include(s,ch). Для исключения exclude(s,ch). Где первый параметр может означать множество, а второй – исключаемый элемент.

Множество представляется в памяти с помощью характеристической переменной функции C(s). Это массив из битовых логических значений. Причем і-ая компонента массива указывает входит или не входит соответствующий элемент в множество s.

Например, множество s:set of 1..15, которому присвоено значение s:=[1,3,5,7,13,14]

C(s)=                              
                               

Представление множество в виде характеристических функция позволяет выполнять операции над множествами посредством логических операций над строками битов. Поэтому операции над множествами выполняются быстро.

var a,b:set of 1..8;

a:[1,3,5,8] 1 0 1 0 1 0 0 1
b:=[1,4,5,8] 1 0 0 1 1 0 0 1
a*b=[1,5,8] 1 0 0 0 1 0 0 1
Значения базового типа 1 2 3 4 5 6 7 8

Пусть требуется создать множество из литер, найти в нем элемент с минимальным кодом, распечатать все элементы множества в алфавитном порядке. Выход из процедуры создания будем осуществлять вводом символа «*». Работу организуем с пользованием процедур, вызываемых из пунктов меню

program DemoSet;

uses crt;

var S:set of ‘A’..’z’; { описание множества }

C:char; { вводимая буква }

Number:integer; { номер пункта меню }

Procedure Rasp;

{ процедура печати элементов множества S в алфавитном порядке }




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 432; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.