Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Set
- {
- private:
- unsigned int size;
- unsigned int* array;
- public:
- Set() { size = 0; array = nullptr; } // конструктор
- Set(int s) {
- size = s; array = new unsigned int[size]; // конструктор с аргументами
- for (unsigned i = 0; i < size; i++)
- array[i] = 0;
- }
- Set(const Set& ob) // конструктор копиирования
- {
- size = ob.size;
- array = new unsigned int[size];
- for (unsigned int i = 0; i < size; i++)
- array[i] = ob.array[i];
- }
- ~Set() { delete[] array; } // деструктор
- void enter(); // ввод
- void show(); // вывод
- void association(Set, Set); // объединение
- void intersection(Set, Set); // пересечение
- void add(); // добавка элемента
- void extract(); // извлечение
- void check(); // проверка
- void operator = (Set); // перегрузки
- int operator [] (int i);
- };
- void Set::enter()
- {
- std::cout << "Введите размер " << std::endl;
- std::cin >> size;
- array = new unsigned int[size];
- for (unsigned int i = 0; i < size; i++)
- {
- std::cout << "Введите элемент " << i + 1 << ") ";
- std::cin >> array[i];
- }
- }
- void Set::show()
- {
- std::cout << "Множество " << std::endl;
- for (unsigned int i = 0; i < size; i++)
- std::cout << array[i] << " ";
- std::cout << std::endl;
- }
- void Set::association(Set a, Set b)
- {
- this->size = a.size + b.size;
- this->array = new unsigned int[size];
- unsigned i, j, count = 0;
- unsigned int n = a.size;
- for (i = 0; i < a.size; i++)
- array[i] = a.array[i];
- for (i = 0; i < b.size; i++)
- {
- for (j = 0; j < a.size; j++)
- if (b.array[i] == a.array[j])
- continue;
- else
- count++;
- if (count == a.size)
- array[n++] = b.array[i];
- count = 0;
- }
- size = n;
- }
- void Set::intersection(Set a, Set b)
- {
- size = a.size + b.size;
- array = new unsigned int[size];
- unsigned int i, j, n = 0;
- for (i = 0; i < a.size; i++)
- for (j = 0; j < b.size; j++)
- {
- if (a.array[i] == b.array[j])
- {
- array[n++] = a.array[i];
- continue;
- }
- }
- size = n;
- }
- void Set::add()
- {
- int a[100];
- unsigned int i;
- int element;
- for (i = 0; i < size; i++)
- a[i] = array[i];
- delete[] array;
- size = size + 1;
- std::cout << "Введите новый элемент: " << std::endl;
- std::cin >> element;
- a[i] = element;
- array = new unsigned int[size];
- for (i = 0; i < size; i++)
- array[i] = a[i];
- }
- void Set::extract()
- {
- unsigned int number, n, i, j;
- n = size;
- std::cout << "Введите номер элемента от 0 до " << size - 1 << std::endl;
- std::cin >> number;
- if (number < 0 || number > size)
- std::cout << "Ошибка! " << std::endl;
- else
- {
- for (i = 0; i < n; i++)
- {
- if (i == number)
- {
- for (j = i; j < n - 1; j++)
- array[j] = array[j + 1];
- n--;
- }
- }
- size--;
- }
- }
- void Set::check()
- {
- unsigned int element;
- std::cout << "Введите элемент для проверки: " << std::endl;
- std::cin >> element;
- unsigned int i, count = 0;
- for (i = 0; i < size; i++)
- if (array[i] == element)
- std::cout << "Да, такой элемент найден " << std::endl;
- else
- count++;
- if (count == size)
- std::cout << "Элемент не найден! " << std::endl;
- }
- void Set::operator = (Set a)
- {
- unsigned int i;
- delete[] this->array;
- this->size = a.size;
- this->array = new unsigned int[size];
- for (i = 0; i < size; i++)
- array[i] = a.array[i];
- }
- int Set::operator[](int i)
- {
- return array[i];
- }
- int main()
- {
- setlocale(0, "rus");
- Set a;
- std::cout << "Ввод и вывод 1 множества " << std::endl;
- a.enter();
- a.show();
- Set b = a;
- std::cout << "Инициализация множества 2 с помощью конструктора копии " << std::endl;
- b.show();
- std::cout << "Ввод множества 2 " << std::endl;
- b.enter();
- Set c;
- std::cout << "Объединение множеств " << std::endl;
- c.association(a, b);
- c.show();
- Set d;
- d.intersection(a, b);
- std::cout << "Пересечение множеств" << std::endl;
- d.show();
- std::cout << "Добавка элемента " << std::endl;
- d.add();
- d.show();
- std::cout << "Проверка " << std::endl;
- d.check();
- d.show();
- std::cout << "Извлечение " << std::endl;
- d.extract();
- d.show();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement