Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- using namespace std;
- template <typename typ> class zbior
- {
- typ* tablica;
- int ilosc;
- ///ta funkcja
- int obliczSume(int ilosc)
- {
- int suma = 0;
- for (int i = 0; i < ilosc; i++)
- {
- suma += tablica[i];
- }
- //dla 1 elementu
- if (suma == 0)
- return 1;
- //dla 2 elementu
- else if (suma == 1)
- return 2;
- //dla n-tego elementu
- else
- return suma;
- }
- public:
- ///zbedne
- zbior(zbior<typ>& z)
- {
- try
- {
- tablica = new typ[z.ilosc];
- ilosc = z.ilosc;
- for (int i = 0; i < ilosc; i++)
- tablica[i] = z.tablica[i];
- }
- catch (bad_alloc)
- {
- cout << "Za mało pamięci!";
- };
- }
- ///zbedne
- zbior<typ>& operator =(zbior<typ> z)
- {
- try
- {
- tablica = new typ[z.ilosc];
- ilosc = z.ilosc;
- for (int i = 0; i < ilosc; i++)
- tablica[i] = z.tablica[i];
- }
- catch (bad_alloc)
- {
- cout << "Za mało pamięci!";
- };
- return *this;
- }
- ///1 punkt
- ///parametr
- zbior(int a = 100)
- {
- try
- {
- ilosc = a;
- tablica = new typ[a];
- for (int i = 0; i < ilosc; i++)
- ///ciag arytmetyczny
- tablica[i] = obliczSume(i);
- }
- catch (bad_alloc)
- {
- cout << "Za mało pamięci!";
- }
- };
- ///2 punkt
- ~zbior()
- {
- delete[] tablica;
- };
- ///3 punkt
- zbior<typ>& operator <<(typ x)
- {
- typ* temp;
- try
- {
- ilosc++;
- temp = new typ[ilosc];
- for (int i = 0; i < ilosc - 1; i++)
- temp[i] = tablica[i];
- temp[ilosc - 1] = x;
- delete[] tablica;
- tablica = temp;
- }
- catch (bad_alloc)
- {
- ilosc--;
- cout << "Za mało pamięci!";
- };
- return *this;
- };
- ///punkt 4
- ///nowy
- zbior<typ>& operator >>(typ x)
- {
- typ* temp;
- try
- {
- ilosc++;
- temp = new typ[ilosc];
- for (int i = 1; i < ilosc; i++)
- temp[i] = tablica[i - 1];
- temp[0] = x;
- delete[] tablica;
- tablica = temp;
- }
- catch (bad_alloc)
- {
- ilosc--;
- cout << "Za mało pamięci!";
- };
- return *this;
- };
- ///zbedne
- zbior<typ>& operator --()
- {
- typ* temp;
- try
- {
- ilosc--;
- temp = new typ[ilosc];
- for (int i = 0; i < ilosc; i++)
- temp[i] = tablica[i];
- delete[] tablica;
- tablica = temp;
- }
- catch (bad_alloc)
- {
- ilosc++;
- cout << "Za mało pamięci!";
- };
- return *this;
- };
- ///zbedne
- int operator %(typ x)
- {
- for (int i = 0; i < ilosc; i++)
- {
- if (tablica[i] == x)
- return 1;
- }
- return 0;
- }
- ///zbedne
- typ operator [](int a)
- {
- return tablica[a];
- }
- ///4 punkt
- friend ostream& operator<< (ostream& wyj, const zbior<typ>& zet);// Dziedziczenie funkcji
- ///5 punkt
- int GetSize() const// Funkcja zwracająca wielkość zbioru
- {
- return ilosc;
- }
- };
- template <class parametr> ostream& operator << (ostream& wyj, zbior<parametr>& zet)// klasa do strumienia wartości zbioru
- {
- int j = 0;
- wyj << "[";
- int i = 0;
- int max = zet.GetSize();
- while (i < max)
- {
- wyj << zet[i];
- i++;
- if (i != max)
- {
- wyj << ",";
- }
- }
- wyj << "]" << endl;
- wyj << endl;
- return wyj;
- }
- int main(int argc, char* argv[])
- {
- /*
- int k;
- int p;
- zbior<int> z1(4);
- zbior<int> z4(100000000000000);
- zbior<int> z2(4);
- zbior<float> z5(9);
- z1 << 3;
- z1 << 4;
- z1 << 5;
- z1 << 7;
- p = z1 % 5;
- cout << "Czy element nalezy do zbioru: " << endl;
- if (p == 1)
- {
- cout << "Dany element nalezy do zbioru" << endl;
- }
- else
- {
- cout << "Dany element nie nalezy do zbioru" << endl;
- }
- k = z1[3];
- cout << "Wartosc dla danego indeksu: " << k << endl;
- cout << "zbior z1:" << z1 << endl;
- z2 = z1;
- cout << "zbior z2 przepisany operatorem przypisania: " << z2;
- zbior<int> z3(z1);
- cout << "Zbior z3 skopiowany konsturktorem kopiujacym: " << z3;
- system("PAUSE");
- return EXIT_SUCCESS;
- */
- zbior<int> z1(4);
- cout << "zbior podstawowy: ";
- cout << z1 << endl;
- z1 << 30;
- z1 << 40;
- z1 << 50;
- z1 << 70;
- cout << "zbior po dodaniu 4 elementow na koniec: ";
- cout << z1 << endl;
- z1 >> -30;
- z1 >> -40;
- z1 >> -50;
- z1 >> -70;
- cout << "zbior po dodaniu 4 elementow na poczatek: ";
- cout << z1 << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement