Лабораторная 2. Множества.

  1. Разработать функции для низкоуровневого управления множествами, реализующие: служебные операции, операции in, +, -, *, аналоги функций include, exclude. Для хранения каждого элемента множества следует использовать не более 1 бита оперативной памяти. Максимальное количество элементов во множестве = high(integer). Разрешается использовать как битовые массивы, так и средства прямого доступа к оперативной памяти множества.
     { тип множества }
    type TSet=pointer;
    
     { выделение памяти для множества на count элементов}
    function createSet(count:integer):TSet;
    
     { изменение размера множества }
    procedure setSize(var dstSet:TSet; newCount:integer);
    
     { получение размера множества }
    function getSize(bSet:TSet): integer;
    
     { уничтожение множества }
    function destroySet(dstSet:TSet);
    
     { сжатие множества до минимально возможного размера }
    procedure shrinkSet(var dstSet:TSet);
    
     { аналог операции in }
    function inSet(bSet:TSet; e:integer):boolean;
    
     { аналог операции + }
     { при необходимости увеличивает размер dstSet}
    procedure addSet(dstSet:TSet; b1Set,b2Set:TSet); 
    procedure addSet(dstSet,bSet:TSet);
    
     { аналог операции - }
     { при необходимости увеличивает размер dstSet}
    procedure subSet(dstSet:TSet; b1Set,b2Set:TSet); 
    procedure subSet(dstSet,bSet:TSet);
    
     { аналог операции * }
     { при необходимости увеличивает размер dstSet}
    procedure mulSet(dstSet:TSet; b1Set,b2Set:TSet); 
    procedure mulSet(dstSet,bSet:TSet);
    
     { аналог функции include }
     { при необходимости увеличивает размер dstSet}
    procedure includeSet(dstSet:TSet; e:integer);
    
     { аналог функции exclude }
     { при необходимости увеличивает размер dstSet}
    procedure excludeSet(dstSet:TSet; e:integer);
    

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

    Рекомендуемый язык программирования - FreePascal
    Разрешается использовать язык программирования Си