Делалось с использованием http://itteach.ru/pascal/pascal-mnozhestvo-set-of

Множество (SET OF)

В Паскале Множество - совокупность неупорядоченных данных указанного (базового) типа. Базовый тип:

должен быть упорядоченным (порядковым);

должен иметь не более 256 возможных значений;

*порядковые значения* (значения, возвращаемые функцией ord) базового типа не должны выходить из диапазона от 0 до 255.

Поэтому, базовым типом множества не может быть ни Real (не порядковый тип), ни типы ShorInt, Integer, LongInt или Word (несовпадение диапазонов).

Переменная типа множество может принимать как все значения множества, так и ни одного.

Любой множественный тип может принимать значение [], которое называется пустым множеством.

Множество можно описать тремя способами:

1. В разделе описания переменных:

var <имя множества>:set of <базовый тип>;

2. В разделе описания типов:

type <имя типа>=set of <базовый тип>;
>var <имя множества>:<имя типа>;

3. В разделе описания констант:

type up =set of ‘A’..’Z’; low=set of ‘a’..’z’; const upcase:up=[’A’..’Z’] ; voc:low[’a’,’e’,’i’,’o’,’u’,’y’] ; delimeter: set of char=[’ ‘..’/’,’:’..’?’];

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

Над множествами возможны операции:

Операция объединения: С:=А+В

Операция пересечения: С:=А*В

Операция разности: С:=А-В

Операция равенства(совпадения) множеств: С=В

Операция неравенства: C <> B

Операция проверки на вхождение множества в множество: A ⇐ B - включено ли А в В;

Операция проверки на вхождение элемента в множество (in): С in B - входит ли элемент С в множество В