MeehoweCK

Untitled

Dec 15th, 2022
695
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class TablicaInt
  6. {
  7.     unsigned wielkosc;
  8.     int* tablica;
  9. public:
  10.     TablicaInt();
  11.     explicit TablicaInt(unsigned w);
  12.     ~TablicaInt();
  13.     void dodaj(int nowy);
  14.     void zmien_rozmiar(unsigned nowy);
  15.     void wypisz() const;
  16.     void usun_dane();
  17.     unsigned rozmiar() const;
  18. };
  19.  
  20. TablicaInt::TablicaInt() : wielkosc(0), tablica(nullptr) {}
  21.  
  22. TablicaInt::TablicaInt(unsigned w) : wielkosc(w), tablica(new int[w])
  23. {
  24.     for(unsigned i = 0; i < w; ++i)
  25.         tablica[i] = 0;
  26. }
  27.  
  28. TablicaInt::~TablicaInt()
  29. {
  30.     if(tablica != nullptr)
  31.         delete[] tablica;
  32.     cout << "Tablica poprawnie usunieta.\n";
  33. }
  34.  
  35. void TablicaInt::dodaj(int nowy)
  36. {
  37.     // jeżeli tablica dotychczas jest pusta, alokujemy do niej pamięć dla tablicy jednoelementowej:
  38.     if(tablica == nullptr)
  39.     {
  40.         tablica = new int[1];
  41.         tablica[0] = nowy;
  42.         wielkosc = 1;
  43.         return;
  44.     }
  45.     // w przeciwnym wypadku:
  46.     // tworzymy tablicę tymczasową o rozmiarze dotychczasowej tablicy
  47.     int* temp = new int[wielkosc];
  48.     // kopiujemy zawartość tablicy dotychczasowej do nowej, tymczasowej
  49.     for(unsigned i = 0; i < wielkosc; ++i)
  50.         temp[i] = tablica[i];
  51.     // zwalniamy pamięć z dotychczasowej tablicy
  52.     delete[] tablica;
  53.     // na miejscu tablicy tworzymy nową, o rozmiarze o 1 większym
  54.     tablica = new int[wielkosc + 1];
  55.     // do nowej tablicy kopiujemy zawartość tymczasowej
  56.     for(unsigned i = 0; i < wielkosc; ++i)
  57.         tablica[i] = temp[i];
  58.     // zwalniamy pamięć z tablicy tymczasowej
  59.     delete[] temp;
  60.     // na ostatni element tablicy wpisujemy nową wartość
  61.     tablica[wielkosc] = nowy;
  62.     // zwiększamy wielkość o 1
  63.     ++wielkosc;
  64. }
  65.  
  66. void TablicaInt::wypisz() const
  67. {
  68.     if(wielkosc > 0)
  69.         for(unsigned i = 0; i < wielkosc; ++i)
  70.             cout << tablica[i] << '\t';
  71.     cout << endl;
  72. }
  73.  
  74.  
  75. int main()
  76. {
  77.     TablicaInt tablica(5);
  78.     tablica.wypisz();
  79.     tablica.dodaj(10);
  80.     tablica.wypisz();
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment