ЛР1. Множества

Задания

  1. Блок 1
    1. Даны два числовых множества (получены со стандартного ввода). Найти общие элементы множеств, факт полного вхождения первого множества во второе, факт полного вхождения второго множества в первое.
    2. Дано число и дано множество, состоящее из нескольких цифр (получены со стандартного ввода). Определить, какие цифры из множества входят в запись числа.
    3. Дана строка и дано множество символов (получены со стандартного ввода). Определить, какие символы из множества не входят в состав строки.

  2. Блок 2
    Разработать функции для управления множествами, с преодолением ограничения на 256 элементов, обеспечивающие создание и уничтожение множеств, реализующие операции in, +, -, *, аналоги функций include, exclude. Функции должны обрабатывать динамический массив, каждый элемент которого содержит байтовое множество. Таким образом, массив их двух элементов позволит обрабатывать 512 элементов множества, из четырех - 1024 элемента и т.д.
     { тип множества }
    type 
        TSingleSet=set of byte;
        TLongSet=array of TSingleSet;
    
     { создание множества на count элементов
       реальное кол-во элементов всегда будет выравнено по границе, кратной 256
       пример: createSet(3) создаст множество на 256 элементов, 
       createSet(321) - на 512 элементов }
    function createSet(count:integer):TLongSet;
    
     { изменение размера множества
       множество может как увеличено, так и уменьшено
       в последнем случае возможна утеря элементов }
    procedure setSize(var dstSet:TLongSet; newCount:integer);
    
     { получение размера множества (кратно 256) }
    function getSize(bSet:TLongSet): integer;
    
     { уничтожение множества }
    procedure destroySet(var dstSet:TLongSet);
    
     { аналог операции in }
    function inSet(bSet:TLongSet; e:integer):boolean;
    
     { аналог операции +, возвращает новое множество }
    function sumSet(set1,set2:TLongSet):TLongSet; 
    
     { аналог операции -, возвращает новое множество }
    function subSet(set1,set2:TLongSet):TLongSet; 
    
     { аналог операции *, возвращает новое множество }
    function mulSet(set1,set2:TLongSet):TLongSet; 
    
     { аналог функции include, изменяет переданное множество
       при необходимости увеличивает его размер }
    procedure includeSet(var dstSet:TLongSet; e:integer);
    
     { аналог функции exclude, изменяет переданное множество  }
    procedure excludeSet(var dstSet:TLongSet; e:integer);
    

    Проверить работу функций.