Advertisement
MeehoweCK

Untitled

Oct 22nd, 2020
1,813
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.89 KB | None | 0 0
  1. // tablica.hpp
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. template <class T>
  7. class Tablica
  8. {
  9.     //friend ostream& operator<<(ostream& os, const Tablica<T>& dat);
  10.     T* dane;
  11.     unsigned rozmiar;
  12. public:
  13.     Tablica();
  14.     ~Tablica();
  15.     T& operator[](size_t nr)
  16.     {
  17.         return dane[nr];
  18.     }
  19.     const T& operator[](size_t nr) const
  20.     {
  21.         return dane[nr];
  22.     }
  23.     void dodaj_element(T);
  24.     T get_element(unsigned);
  25.     bool set_element(unsigned, T);
  26.     void clear();
  27.     void sortuj();
  28.     void wypisz();
  29. };
  30.  
  31. template <class T>
  32. Tablica<T>::Tablica() : dane(nullptr), rozmiar(0) {}
  33.  
  34. template <class T>
  35. Tablica<T>::~Tablica()
  36. {
  37.     delete[] dane;
  38.     cout << "Destruktor zakonczyl prace\n";
  39. }
  40.  
  41. template <class T>
  42. void Tablica<T>::dodaj_element(T nowa)
  43. {
  44.     /*
  45.     1. utworzenie nowej tablicy tymaczowej (temp) o dotychczasowym rozmiarze
  46.     2. przekopiowanie danych z dotychczasowej tablicy do temp
  47.     3. zwolnienie pamięci z tablicy dotychczasowej
  48.     4. stworzenie nowej tablicy na miejsce wskaźnika dane, o rozmiarze o 1 większym
  49.     5. przekopiowanie danych z tablicy temp do tablicy dane
  50.     6. zwolnienie pamięci ze wskaźnika temp
  51.     7. dopisanie nowego elementu do tablicy
  52.     8. zwiększenie rozmiaru o 1
  53.     */
  54.  
  55.     // 1
  56.     T* temp = new T[rozmiar];
  57.  
  58.     // 2
  59.     for(unsigned i = 0; i < rozmiar; ++i)
  60.         temp[i] = dane[i];
  61.  
  62.     // 3
  63.     delete[] dane;
  64.  
  65.     // 4
  66.     dane = new T[rozmiar + 1];
  67.  
  68.     // 5
  69.     for(unsigned i = 0; i < rozmiar; ++i)
  70.         dane[i] = temp[i];
  71.  
  72.     // 6
  73.     delete[] temp;
  74.  
  75.     // 7
  76.     dane[rozmiar] = nowa;
  77.  
  78.     // 8
  79.     ++rozmiar;
  80. }
  81.  
  82.  
  83. template <class T>
  84. T Tablica<T>::get_element(unsigned nr)
  85. {
  86.     return dane[nr];
  87. }
  88.  
  89. template <class T>
  90. bool Tablica<T>::set_element(unsigned nr, T wartosc)
  91. {
  92.     if(nr < rozmiar)
  93.     {
  94.         dane[nr] = wartosc;
  95.         return true;
  96.     }
  97.     return false;
  98. }
  99.  
  100. template <class T>
  101. void Tablica<T>::clear()
  102. {
  103.     delete[] dane;
  104.     rozmiar = 0;
  105. }
  106.  
  107. /*template <class T>
  108. ostream& operator<<(ostream& os, const Tablica<T>& obiekt)
  109. {
  110.     os << "Rozmiar tablicy: " << obiekt.rozmiar << endl;
  111.     os << "Dane: ";
  112.     for(unsigned i = 0; i < obiekt.rozmiar; ++i)
  113.         os << obiekt.dane[i] << '\t';
  114.     os << endl;
  115.     os << "Adres pierwszej komorki tablicy: " << obiekt.dane;
  116.     return os;
  117. }*/
  118.  
  119. template <class T>
  120. void Tablica<T>::wypisz()
  121. {
  122.     cout << "Rozmiar tablicy: " << rozmiar << endl;
  123.     cout << "Dane: ";
  124.     for(unsigned i = 0; i < rozmiar; ++i)
  125.         cout << dane[i] << '\t';
  126.     cout << endl;
  127.     cout << "Adres pierwszej komorki tablicy: " << dane;
  128.     cout << endl;
  129. }
  130.  
  131. template <class T>
  132. void Tablica<T>::sortuj()
  133. {
  134.     for(unsigned i = 0; i < rozmiar; ++i)
  135.         for(unsigned j = 0; j < rozmiar - 1 - i; ++j)
  136.             if(dane[j] > dane[j + 1])
  137.                 swap(dane[j], dane[j + 1]);
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement