Загрузка данных


#ifndef MY_LIB_H
#define MY_LIB_H

// Структура подмножества символов латинского алфавита
struct My_set
{
    bool* M;      // Двоичный массив наличия элементов
    int N;        // Размер универсума (26)
    char a;       // Первый символ универсума ('a')

    // Конструкторы и управление памятью
    My_set();                         // Конструктор по умолчанию (пустое множество)
    My_set(const My_set& other);      // Конструктор копирования
    ~My_set();                        // Деструктор для очистки памяти
    My_set& operator=(const My_set& other); // Оператор присваивания

    // Методы работы с элементами множества
    void insert(char value);          // Добавление элемента
    void remove(char value);          // Удаление элемента
    void print();                     // Вывод множества на экран
    int size();                       // Вычисление мощности (количества элементов)
    bool find(char value);            // Поиск элемента во множестве
};

// Функции отношений между двумя множествами
bool equal(My_set A, My_set B);       // Проверка равенства множеств A и B
bool subset(My_set A, My_set B);      // Проверка включения (является ли A подмножеством B)

// Функции операций над множествами
My_set unification(My_set A, My_set B);          // Объединение (A v B)
My_set intersection(My_set A, My_set B);         // Пересечение (A & B)
My_set difference(My_set A, My_set B);           // Разность (A \ B)
My_set addition(My_set A);                       // Дополнение до универсума (НЕ A)
My_set symmetric_difference(My_set A, My_set B); // Симметрическая разность (кольцевая сумма)

#endif