Множина – це структурований тип даних для представлення набору деяких елементів як одного цілого. Область значень множини є набір усіх можливих підмножин, складених із її елементів. Така множина називається множиною степенем.
Множина степінь для
це
,
де
– порожня множина.
Всі елементи множини різні й невпорядковані, тому
і
– еквівалентні. Кількість елементів множини називається потужністю і не перевищує
.
У програмі опис множини має вигляд
<ім’я типу> = set of <базовий тип>;
де <ім’я типу> – ідентифікатор, set, of – зарезервовані слова (множина, із), <базовий тип> – будь-який порядковий тип крім Word, Integer, LongInt.
Множина задається за допомогою конструктора. Конструктор – це список констант або виразів базового типу, а також тип-діапазон базового типу.
Над множинами визначені такі операції:
·
– перевірка еквівалентності; результат
, якщо множини еквівалентні, інакше
;
·
– перевірка нееквівалентності; результат
, якщо множини нееквівалентні, інакше
;
·
– перевірка входження; результат
, якщо множина
включає множину
, інакше
;
·
– перевірка входження; результат
, якщо множина
включає множину
, інакше
;
·
– перевірка належності; результат
, якщо елемент
міститься у множині
, інакше
;
·
– перетин множин; результат – множина спільних елементів
і
;
·
– об’єднання множин; результат – множина елементів
доповнена тими елементами
, яких немає в
;
·
– різниця множин; результат – множина елементів
, яких немає у
.
Окрім зазначених операцій можна використовувати процедуру
– включення елемента
у множину S та процедуру
– виключення елемента
із множини S.
Приклад.Задано натуральне число
. Розробити програму, яка друкує у зростаючому порядку всі цифри, які входять в це число, які не входять в це число і які входять в це число більше одного разу.
Для побудови згаданих множин будемо виділяти цифри у заданому числі. Для цього будемо послідовно ділити це число за модулем 10 (операція mod) і ділити націло на 10 (операція div). Остачі від ділення за модулем 10 будуть цифрами цього числа. Будемо поміщати ці цифри у множину s1. Якщо така цифра вже є в множині s1, то будемо їх поміщати у множину цифр, що повторюються s3. Множину s2, із цифр, яких немає в числі, отримаємо як різницю множини константи всіх цифр c і множини s1.
Програма у консольному режимі роботи має вигляд:
Program LABR6_1;
{$APPTYPE CONSOLE}
uses Sysutils;
CONST c=[0..9];
VAR n, i, k: integer;
s1, s2, s3: set of 0..9;
BEGIN
{Введення початкових даних}
writeln (‘Введіть число n’);
readln(n);
s1:=[]; {Множина цифр, що містяться в числі}
s2:=[]; {Множина цифр, що не містяться в числі}
s3:=[]; {Множина цифр, що повторюються}
i:=n;
k:=i mod 10;
while i<>0 do
begin
if k in s1 then s3:=s3+[k];
s1:=s1+[k];
i:=i div 10;
k:=i mod 10;
end;
s2:=c-s1;
writeln(‘Множина цифр, що містяться в числі:’);
for i:=0 to 9 do
if i in s1 then write(i,' ');
writeln(‘Множина цифр, що не містяться в числі:’);
for i:=0 to 9 do
if i in s2 then write(i,' ');
writeln(‘Множина цифр, що повторюються:’);
for i:=0 to 9 do
if i in s3 then write(i,' ');
readln;
END.