Advertisement
codisinmyvines

fdsadsadasdasdas

Nov 4th, 2020
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. #include "settemplate.h"
  2. template <typename T>
  3. Set<T>::Set()
  4. {
  5.     length = 0;
  6. }
  7. template <typename T>
  8. int Set<T>::GetLength()
  9. {
  10.     return length;
  11. }
  12. template <typename T>
  13. void Set<T>::AddEl(T el)
  14. {
  15.     if (length == MAX)
  16.     {
  17.         std::cout << "Множество переполнено!\n";
  18.         std::cout << "Попробуйте удалить элемент из множества прежде чем добавить новый.\n";
  19.     }
  20.     else
  21.     {
  22.         set[length] = el;
  23.         length++;
  24.     }
  25. }
  26. template <typename T>
  27. int Set<T>::IsConsist(T el) //если элемент содержится, то возвращаем его индекс, если нет, то -1
  28. {
  29.     int i;
  30.     for (i = 0; i < length; i++)
  31.         if (set[i] == el)
  32.             return i;
  33.     return -1;
  34. }
  35. template <typename T>
  36. void Set<T>::DelEl(T el)
  37. {
  38.     int i, j;
  39.     int n = this->IsConsist(el);
  40.     if (n != -1)
  41.     {
  42.         Set<T> nset;
  43.         for (i = 0; i < n; i++)
  44.         {
  45.             nset.set[i] = set[i];
  46.             nset.length++;
  47.         }
  48.         for (i = n + 1, j = n; i < length; i++, j++)
  49.         {
  50.             nset.set[j] = set[i];
  51.             nset.length++;
  52.         }
  53.         *this = nset;
  54.     }
  55. }
  56. template <typename T>
  57. void Set<T>::Show()
  58. {
  59.     for (int i = 0; i < length; i++)
  60.         std::cout << set[i] << " ";
  61.     std::cout << "\n";
  62. }
  63. template <typename T>
  64. Set<T> Set<T>::operator+(Set<T> a)
  65. {
  66.     Set<T> res;
  67.     int i, j, n;
  68.     res = *this;
  69.     for (i = 0, j = res.length; i < a.length && j < MAX; i++)
  70.     {
  71.         n = this->IsConsist(a.set[i]);
  72.         if (n == -1)
  73.         {
  74.             res.set[j] = a.set[i];
  75.             res.length++;
  76.             j++;
  77.         }
  78.     }
  79.     return res;
  80. }
  81. template <typename T>
  82. Set<T> Set<T>::operator*(Set<T> a)
  83. {
  84.     Set<T> res;
  85.     int i, j = 0;
  86.     for (i = 0; i < length; i++)
  87.     {
  88.         if (a.IsConsist(set[i]) != -1)
  89.         {
  90.             res.set[j] = set[i];
  91.             res.length++;
  92.             j++;
  93.         }
  94.     }
  95.     return res;
  96. }
  97. template <typename T>
  98. Set<T> Set<T>::operator-(Set<T> a)
  99. {
  100.     Set<T> res;
  101.     int i, j = 0;
  102.     for (i = 0; i < length; i++)
  103.     {
  104.         if (a.IsConsist(set[i]) == -1)
  105.         {
  106.             res.set[j] = set[i];
  107.             res.length++;
  108.             j++;
  109.         }
  110.     }
  111.     return res;
  112. }
  113. template <typename T>
  114. bool Set<T>::include(Set<T> a) //проверяет: cодержится ли множество А в вызываемом объекте
  115. {
  116.     int i, j, l;
  117.     bool k;
  118.     if (a.length <= length)
  119.     {
  120.         for (i = 0; i < length; i++)
  121.         {
  122.             j = 1;
  123.             if (set[i] == a.set[0])
  124.             {
  125.                 k = true;
  126.                 l = i + 1;
  127.                 while (j < a.length)
  128.                 {
  129.                     if (a.set[j] != set[l])
  130.                     {
  131.                         k = false;
  132.                         break;
  133.                     }
  134.                     j++;
  135.                     l++;
  136.                 }
  137.                 if (k) return true;
  138.             }
  139.         }
  140.     }
  141.     return false;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement