Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include <iostream>
- using namespace std;
- class set
- {
- private:
- const unsigned int size; //rozmiar tablicy
- unsigned int i; //iterator
- int *elements; //tablica elementow
- public:
- set(); // domyslny
- set(int); // tworzacy
- set(set const &); // kopiujacy
- int add(int);
- int del(int);
- ~set();
- set friend operator+(set const&, set const&);
- set friend operator-(set const&, set const&);
- set friend operator*(set const&, set const&);
- };
- set::set() :size(0), i(0)
- {
- elements = new int [size]; //pusty zbior
- }
- set::set(int elem) :size(elem), i(0)
- {
- elements = new int[size]; //tworzenie zbioru
- }
- set::set(set const &toCopy):size(toCopy.size),i(toCopy.i)
- {
- elements = new int[size];
- for (int i = 0; i < toCopy.size; i++)
- {
- elements[i] = toCopy.elements[i];
- }
- }
- set::~set()
- {
- delete[] elements;
- elements = NULL;
- }
- int set::add(int elem) //zwraca -1 jesli przekraczamy rozmiar tablicy
- {
- if (size == i) return -1; //nie dodajemy wiecej niz w rozmiarze
- for (int j = 0; j < size; j++)
- {
- if (elements[j] == elem) return 0;
- }
- elements[i] = elem;
- i++;
- return 1;
- }
- int set::del(int element) //zwraca 0 gdy operacja sie uda
- {
- int pos = 0; //iterator
- for (pos; pos < i; pos++)
- {
- if (element == elements[pos]) break;
- return 1;
- }
- while (pos <= i)
- {
- elements[pos] = elements[pos + 1];
- pos++;
- }
- i--;
- return 0;
- }
- set operator+(set const &first, set const &second)
- {
- set newSet(first.i + second.i -1); //tworzymy nowy zbior
- for(int j=0; j<first.i; j++)
- {
- newSet.add(first.elements[j]);
- }
- for (int j = 0; j < second.i; j++)
- {
- newSet.add(second.elements[j]);
- }
- return newSet;
- }
- set operator-(set const &first, set const &second)
- {
- int common[100]; //tablica elementow roznicy
- int sizeOfCommon = 0;
- bool match = 0; //jesli match == 1, element zostal znaleziony w drugiej tablicy i nie bedzie wpisany
- for (int i = 0; i < first.i; i++)
- {
- for (int j = 0; j < second.i; j++)
- {
- if (first.elements[i] == second.elements[j]) match = 1;
- }
- if (match == 0)
- {
- common[sizeOfCommon] = first.elements[i];
- sizeOfCommon++;
- }
- match = 0;
- }
- set newSet(sizeOfCommon);
- for (int i = 0; i < sizeOfCommon; i++)
- {
- newSet.elements[i] = common[i];
- newSet.i++;
- }
- return newSet;
- }
- set operator*(set const &first, set const &second)
- {
- int common[100]; //tablica elementow wspolnych
- int sizeOfCommon = 0;
- for (int i = 0; i < first.i; i++)
- {
- for (int j = 0; j < second.i; j++)
- {
- if (first.elements[i] == second.elements[j])
- {
- common[sizeOfCommon] = second.elements[j];
- sizeOfCommon++;
- }
- }
- }
- set newSet(sizeOfCommon);
- for (int i = 0; i < sizeOfCommon; i++)
- {
- newSet.elements[i] = common[i];
- newSet.i++;
- }
- return newSet;
- }
- int main()
- {
- set test(5);
- set test2(8);
- test.add(2);
- test.add(50);
- test.add(4);
- test2.add(2);
- test2.add(30);
- test2.add(60);
- set sumaZbiorow = test + test2;
- set roznica = test - test2;
- set wspolny = test * test2;
- test.del(50);
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement