Делалось с использованием [[http://itteach.ru/pascal/pascal-mnozhestvo-set-of|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 - входит ли элемент С в множество В