Advertisement
MeehoweCK

Untitled

Dec 15th, 2022
821
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.41 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.     int& operator[](unsigned nr);
  19. };
  20.  
  21. TablicaInt::TablicaInt() : wielkosc(0), tablica(nullptr) {}
  22.  
  23. TablicaInt::TablicaInt(unsigned w) : wielkosc(w), tablica(new int[w])
  24. {
  25.     for(unsigned i = 0; i < w; ++i)
  26.         tablica[i] = 0;
  27. }
  28.  
  29. TablicaInt::~TablicaInt()
  30. {
  31.     if(tablica != nullptr)
  32.         delete[] tablica;
  33.     cout << "Tablica poprawnie usunieta.\n";
  34. }
  35.  
  36. void TablicaInt::dodaj(int nowy)
  37. {
  38.     // jeżeli tablica dotychczas jest pusta, alokujemy do niej pamięć dla tablicy jednoelementowej:
  39.     if(tablica == nullptr)
  40.     {
  41.         tablica = new int[1];
  42.         tablica[0] = nowy;
  43.         wielkosc = 1;
  44.         return;
  45.     }
  46.     // w przeciwnym wypadku:
  47.     // tworzymy tablicę tymczasową o rozmiarze dotychczasowej tablicy
  48.     int* temp = new int[wielkosc];
  49.     // kopiujemy zawartość tablicy dotychczasowej do nowej, tymczasowej
  50.     for(unsigned i = 0; i < wielkosc; ++i)
  51.         temp[i] = tablica[i];
  52.     // zwalniamy pamięć z dotychczasowej tablicy
  53.     delete[] tablica;
  54.     // na miejscu tablicy tworzymy nową, o rozmiarze o 1 większym
  55.     tablica = new int[wielkosc + 1];
  56.     // do nowej tablicy kopiujemy zawartość tymczasowej
  57.     for(unsigned i = 0; i < wielkosc; ++i)
  58.         tablica[i] = temp[i];
  59.     // zwalniamy pamięć z tablicy tymczasowej
  60.     delete[] temp;
  61.     // na ostatni element tablicy wpisujemy nową wartość
  62.     tablica[wielkosc] = nowy;
  63.     // zwiększamy wielkość o 1
  64.     ++wielkosc;
  65. }
  66.  
  67. void TablicaInt::zmien_rozmiar(unsigned nowy)
  68. {
  69.     if(wielkosc==nowy)
  70.         return;
  71.  
  72.     if(wielkosc == 0)
  73.     {
  74.         wielkosc = nowy;
  75.         tablica = new int[wielkosc];
  76.  
  77.         for(unsigned i = 0; i < wielkosc; ++i)
  78.             tablica[i] = 0;
  79.         return;
  80.     }
  81.  
  82.     if(wielkosc<nowy)
  83.     {
  84.         int* temp= new int[wielkosc];
  85.         for(unsigned i=0; i<wielkosc; i++)
  86.             temp[i]=tablica[i];
  87.  
  88.         delete[] tablica;
  89.  
  90.         tablica = new int[nowy];
  91.         for (unsigned i=0; i<wielkosc; ++i)
  92.             tablica[i] = temp[i];
  93.         delete [] temp;
  94.  
  95.         for(unsigned i=wielkosc; i<nowy; i++)
  96.             tablica[i] = 0;
  97.  
  98.         wielkosc=nowy;
  99.         return;
  100.     }
  101.  
  102.     if(nowy==0)
  103.     {
  104.         delete[] tablica;
  105.         wielkosc=0;
  106.         return;
  107.     }
  108.  
  109.     wielkosc=nowy;
  110.     int* temp = new int[wielkosc];
  111.     for (unsigned i=0; i<wielkosc; i++)
  112.         temp[i]= tablica[i];
  113.  
  114.     delete[] tablica;
  115.     tablica = new int[wielkosc];
  116.     for (unsigned i=0; i<wielkosc; ++i)
  117.         tablica[i] = temp[i];
  118.     delete [] temp;
  119.  
  120.  
  121.  
  122. }
  123.  
  124. void TablicaInt::wypisz() const
  125. {
  126.     if(wielkosc > 0)
  127.         for(unsigned i = 0; i < wielkosc; ++i)
  128.             cout << tablica[i] << '\t';
  129.     cout << endl;
  130. }
  131.  
  132. void TablicaInt::usun_dane()
  133. {
  134.     zmien_rozmiar(0);
  135. }
  136.  
  137. unsigned TablicaInt::rozmiar() const
  138. {
  139.     return wielkosc;
  140. }
  141.  
  142. int& TablicaInt::operator[](unsigned nr)
  143. {
  144.     return tablica[nr];
  145. }
  146.  
  147. int main()
  148. {
  149.     TablicaInt tablica(5);
  150.     tablica.wypisz();
  151.     cin >> tablica[2];
  152.     cout << tablica[2];
  153.     tablica.wypisz();
  154.  
  155.     return 0;
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement