Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.08 KB | None | 0 0
  1. include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class set
  6. {
  7. private:
  8.     const unsigned int size; //rozmiar tablicy
  9.     unsigned int i; //iterator
  10.     int *elements; //tablica elementow
  11. public:
  12.     set(); // domyslny
  13.     set(int); // tworzacy
  14.     set(set const &); // kopiujacy
  15.     int add(int);
  16.     int del(int);
  17.     ~set();
  18.  
  19.     set friend operator+(set const&, set const&);
  20.     set friend operator-(set const&, set const&);
  21.     set friend operator*(set const&, set const&);
  22.  
  23. };
  24.  
  25. set::set() :size(0), i(0)
  26. {
  27.     elements = new int [size]; //pusty zbior
  28. }
  29.  
  30. set::set(int elem) :size(elem), i(0)
  31. {
  32.     elements = new int[size]; //tworzenie zbioru
  33. }
  34.  
  35. set::set(set const &toCopy):size(toCopy.size),i(toCopy.i)
  36. {
  37.     elements = new int[size];
  38.     for (int i = 0; i < toCopy.size; i++)
  39.     {
  40.         elements[i] = toCopy.elements[i];
  41.     }
  42. }
  43.  
  44. set::~set()
  45. {
  46.     delete[] elements;
  47.     elements = NULL;
  48. }
  49.  
  50. int set::add(int elem) //zwraca -1 jesli przekraczamy rozmiar tablicy
  51. {
  52.     if (size == i) return -1; //nie dodajemy wiecej niz w rozmiarze
  53.  
  54.     for (int j = 0; j < size; j++)
  55.     {
  56.         if (elements[j] == elem) return 0;
  57.     }
  58.  
  59.     elements[i] = elem;
  60.     i++;
  61.  
  62.     return 1;
  63. }
  64.  
  65. int set::del(int element) //zwraca 0 gdy operacja sie uda
  66. {
  67.     int pos = 0; //iterator
  68.  
  69.     for (pos; pos < i; pos++)
  70.     {
  71.         if (element == elements[pos]) break;
  72.         return 1;
  73.     }
  74.     while (pos <= i)
  75.     {
  76.         elements[pos] = elements[pos + 1];
  77.         pos++;
  78.     }
  79.     i--;
  80.     return 0;
  81. }
  82.  
  83. set operator+(set const &first, set const &second)
  84. {
  85.     set newSet(first.i + second.i -1); //tworzymy nowy zbior
  86.  
  87.     for(int j=0; j<first.i; j++)
  88.     {
  89.         newSet.add(first.elements[j]);
  90.     }
  91.     for (int j = 0; j < second.i; j++)
  92.     {
  93.         newSet.add(second.elements[j]);
  94.     }
  95.     return newSet;
  96. }
  97.  
  98. set operator-(set const &first, set const &second)
  99. {
  100.  
  101.     int common[100]; //tablica elementow roznicy
  102.     int sizeOfCommon = 0;
  103.     bool match = 0; //jesli match == 1, element zostal znaleziony w drugiej tablicy i nie bedzie wpisany
  104.     for (int i = 0; i < first.i; i++)
  105.     {
  106.         for (int j = 0; j < second.i; j++)
  107.         {
  108.             if (first.elements[i] == second.elements[j]) match = 1;
  109.         }
  110.         if (match == 0)
  111.         {
  112.             common[sizeOfCommon] = first.elements[i];
  113.             sizeOfCommon++;
  114.         }
  115.         match = 0;
  116.     }
  117.  
  118.     set newSet(sizeOfCommon);
  119.  
  120.     for (int i = 0; i < sizeOfCommon; i++)
  121.     {
  122.         newSet.elements[i] = common[i];
  123.         newSet.i++;
  124.     }
  125.     return newSet;
  126. }
  127.  
  128. set operator*(set const &first, set const &second)
  129. {
  130.     int common[100]; //tablica elementow wspolnych
  131.     int sizeOfCommon = 0;
  132.     for (int i = 0; i < first.i; i++)
  133.     {
  134.         for (int j = 0; j < second.i; j++)
  135.         {
  136.             if (first.elements[i] == second.elements[j])
  137.             {
  138.                 common[sizeOfCommon] = second.elements[j];
  139.                 sizeOfCommon++;
  140.             }
  141.         }
  142.     }
  143.     set newSet(sizeOfCommon);
  144.     for (int i = 0; i < sizeOfCommon; i++)
  145.     {
  146.         newSet.elements[i] = common[i];
  147.         newSet.i++;
  148.     }
  149.     return newSet;
  150. }
  151.  
  152. int main()
  153. {
  154.     set test(5);
  155.     set test2(8);
  156.  
  157.     test.add(2);
  158.     test.add(50);
  159.     test.add(4);
  160.  
  161.     test2.add(2);
  162.     test2.add(30);
  163.     test2.add(60);
  164.  
  165.     set sumaZbiorow = test + test2;
  166.     set roznica = test - test2;
  167.     set wspolny = test * test2;
  168.  
  169.     test.del(50);
  170.  
  171.     return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement