Advertisement
yahorrr

Untitled

Nov 11th, 2021
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.11 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class Set
  4. {
  5. private:
  6.     unsigned int size;
  7.     unsigned int* array;
  8. public:
  9.     Set() { size = 0; array = nullptr; } // конструктор
  10.  
  11.     Set(int s) {
  12.         size = s; array = new unsigned int[size]; // конструктор с аргументами
  13.         for (unsigned i = 0; i < size; i++)
  14.             array[i] = 0;
  15.     }
  16.  
  17.     Set(const Set& ob) // конструктор копиирования
  18.     {
  19.         size = ob.size;
  20.         array = new unsigned  int[size];
  21.         for (unsigned int i = 0; i < size; i++)
  22.             array[i] = ob.array[i];
  23.     }
  24.  
  25.     ~Set() { delete[] array; }  // деструктор
  26.     void enter(); // ввод
  27.     void show(); // вывод
  28.     void association(Set, Set); // объединение
  29.     void intersection(Set, Set); // пересечение
  30.     void add(); // добавка элемента
  31.     void extract(); // извлечение
  32.     void check(); // проверка
  33.     void operator = (Set); // перегрузки
  34.     int operator [] (int i);
  35.  
  36. };
  37.  
  38. void Set::enter()
  39. {
  40.     std::cout << "Введите размер " << std::endl;
  41.     std::cin >> size;
  42.     array = new unsigned int[size];
  43.     for (unsigned int i = 0; i < size; i++)
  44.     {
  45.         std::cout << "Введите элемент " << i + 1 << ")   ";
  46.         std::cin >> array[i];
  47.     }
  48. }
  49.  
  50. void Set::show()
  51. {
  52.     std::cout << "Множество " << std::endl;
  53.     for (unsigned int i = 0; i < size; i++)
  54.         std::cout << array[i] << " ";
  55.     std::cout << std::endl;
  56. }
  57.  
  58. void Set::association(Set a, Set b)
  59. {
  60.     this->size = a.size + b.size;
  61.     this->array = new unsigned int[size];
  62.     unsigned i, j, count = 0;
  63.     unsigned int n = a.size;
  64.  
  65.  
  66.     for (i = 0; i < a.size; i++)
  67.         array[i] = a.array[i];
  68.  
  69.     for (i = 0; i < b.size; i++)
  70.     {
  71.         for (j = 0; j < a.size; j++)
  72.             if (b.array[i] == a.array[j])
  73.                 continue;
  74.             else
  75.                 count++;
  76.         if (count == a.size)
  77.             array[n++] = b.array[i];
  78.         count = 0;
  79.     }
  80.     size = n;
  81. }
  82.  
  83. void Set::intersection(Set a, Set b)
  84. {
  85.     size = a.size + b.size;
  86.     array = new unsigned int[size];
  87.     unsigned int i, j, n = 0;
  88.  
  89.     for (i = 0; i < a.size; i++)
  90.         for (j = 0; j < b.size; j++)
  91.         {
  92.             if (a.array[i] == b.array[j])
  93.             {
  94.                 array[n++] = a.array[i];
  95.                 continue;
  96.             }
  97.         }
  98.     size = n;
  99. }
  100.  
  101. void Set::add()
  102. {
  103.     int a[100];
  104.     unsigned int i;
  105.     int element;
  106.     for (i = 0; i < size; i++)
  107.         a[i] = array[i];
  108.     delete[] array;
  109.     size = size + 1;
  110.  
  111.     std::cout << "Введите новый элемент: " << std::endl;
  112.     std::cin >> element;
  113.     a[i] = element;
  114.  
  115.     array = new unsigned int[size];
  116.     for (i = 0; i < size; i++)
  117.         array[i] = a[i];
  118. }
  119.  
  120. void Set::extract()
  121. {
  122.     unsigned int number, n, i, j;
  123.     n = size;
  124.     std::cout << "Введите номер элемента от 0 до " << size - 1 << std::endl;
  125.     std::cin >> number;
  126.  
  127.     if (number < 0 || number > size)
  128.         std::cout << "Ошибка! " << std::endl;
  129.     else
  130.     {
  131.         for (i = 0; i < n; i++)
  132.         {
  133.             if (i == number)
  134.             {
  135.                 for (j = i; j < n - 1; j++)
  136.                     array[j] = array[j + 1];
  137.                 n--;
  138.             }
  139.  
  140.         }
  141.         size--;
  142.     }
  143. }
  144.  
  145. void Set::check()
  146. {
  147.     unsigned int element;
  148.     std::cout << "Введите элемент для проверки: " << std::endl;
  149.     std::cin >> element;
  150.     unsigned int i, count = 0;
  151.     for (i = 0; i < size; i++)
  152.         if (array[i] == element)
  153.             std::cout << "Да, такой элемент найден " << std::endl;
  154.         else
  155.             count++;
  156.     if (count == size)
  157.         std::cout << "Элемент не найден! " << std::endl;
  158. }
  159.  
  160. void Set::operator = (Set a)
  161. {
  162.     unsigned int i;
  163.     delete[] this->array;
  164.  
  165.     this->size = a.size;
  166.     this->array = new unsigned int[size];
  167.     for (i = 0; i < size; i++)
  168.         array[i] = a.array[i];
  169.  
  170. }
  171.  
  172. int Set::operator[](int i)
  173. {
  174.     return array[i];
  175. }
  176.  
  177. int main()
  178. {
  179.     setlocale(0, "rus");
  180.     Set a;
  181.     std::cout << "Ввод и вывод 1 множества " << std::endl;
  182.     a.enter();
  183.     a.show();
  184.     Set b = a;
  185.     std::cout << "Инициализация множества 2 с помощью конструктора копии " << std::endl;
  186.     b.show();
  187.     std::cout << "Ввод множества 2 " << std::endl;
  188.     b.enter();
  189.     Set c;
  190.     std::cout << "Объединение множеств " << std::endl;
  191.     c.association(a, b);
  192.     c.show();
  193.     Set d;
  194.     d.intersection(a, b);
  195.     std::cout << "Пересечение множеств" << std::endl;
  196.     d.show();
  197.     std::cout << "Добавка элемента " << std::endl;
  198.     d.add();
  199.     d.show();
  200.     std::cout << "Проверка " << std::endl;
  201.     d.check();
  202.     d.show();
  203.     std::cout << "Извлечение " << std::endl;
  204.     d.extract();
  205.     d.show();
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement