MeehoweCK

Untitled

Apr 1st, 2020
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.16 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Tablica
  6. {
  7.     unsigned rozmiar;
  8.     int* tab;           // wskaźnik przechowujący elementy tablicy
  9. public:
  10.     Tablica(unsigned);          // konstruktor domyślny (pobiera rozmiar tablicy)
  11.     Tablica(unsigned, int);     // konstruktor ustalający wielkość tablicy, a także przypisujący daną wartość do wszystkich komórek
  12.     ~Tablica();
  13.     void zmien_rozmiar(unsigned);
  14.     int pobierz_wartosc(unsigned);
  15.     void ustaw_wartosc(unsigned, int);
  16.     void wypisz();
  17. };
  18.  
  19. Tablica::Tablica(unsigned r) : rozmiar(r)
  20. {
  21.     tab = new int[rozmiar];
  22.     for(unsigned i = 0; i < rozmiar; ++i)
  23.         tab[i] = 0;
  24. }
  25.  
  26. Tablica::Tablica(unsigned r, int wartosc) : rozmiar(r)
  27. {
  28.     tab = new int[rozmiar];
  29.     for(unsigned i = 0; i < rozmiar; ++i)
  30.         tab[i] = wartosc;
  31. }
  32.  
  33. Tablica::~Tablica()
  34. {
  35.     delete[] tab;       // zwolnienie pamięci z całej tablicy
  36. }
  37.  
  38. int Tablica::pobierz_wartosc(unsigned i)
  39. {
  40.     return tab[i];
  41. }
  42.  
  43. void Tablica::ustaw_wartosc(unsigned i, int wartosc)
  44. {
  45.     tab[i] = wartosc;
  46. }
  47.  
  48. void Tablica::wypisz()
  49. {
  50.     for(unsigned i = 0; i < rozmiar; ++i)
  51.         cout << tab[i] << '\t';
  52.     cout << endl;
  53. }
  54.  
  55. void Tablica::zmien_rozmiar(unsigned nowy_rozmiar)
  56. {
  57.     if(nowy_rozmiar < rozmiar)      // zmniejszanie tablicy
  58.     {
  59.         // 1. utworzenie tablicy tymczasowej temp
  60.         int* temp = new int[nowy_rozmiar];
  61.  
  62.         // 2. przeniesienie danych do tablicy tymczasowej
  63.         for(unsigned i = 0; i < nowy_rozmiar; ++i)
  64.             temp[i] = tab[i];
  65.  
  66.         // 3. usuwanie dotychczasowej tablicy (zwolnienie pamięci)
  67.         delete[] tab;
  68.  
  69.         // 4. aktualizacja rozmiaru tablicy
  70.         rozmiar = nowy_rozmiar;
  71.  
  72.         // 5. utworzenie na jej miejscu nowej tablicy o nowym rozmiarze
  73.         tab = new int[rozmiar];
  74.  
  75.         // 6. przeniesienie danych z tablicy tymczasowej
  76.         for(unsigned i = 0; i < rozmiar; ++i)
  77.             tab[i] = temp[i];
  78.  
  79.         // 7. usunięcie tablicy tymczasowej
  80.         delete[] temp;
  81.     }
  82.  
  83.     if(nowy_rozmiar > rozmiar)      // zwiększanie tablicy
  84.     {
  85.         // 1. utworzenie tablicy tymczasowej o nowym rozmiarze
  86.         int* temp = new int[nowy_rozmiar];
  87.  
  88.         // 2. uzupełniamy tablicę tymczasową zerami
  89.         for(unsigned i = 0; i < nowy_rozmiar; ++i)
  90.             temp[i] = 0;
  91.  
  92.         // 3. przenosimy dane z dotychczasowej tablicy do nowej
  93.         for(unsigned i = 0; i < rozmiar; ++i)
  94.             temp[i] = tab[i];
  95.  
  96.         // 4. aktualizacja rozmiaru tablicy
  97.         rozmiar = nowy_rozmiar;
  98.  
  99.         // 5. usuwamy dotychczasową tablicę
  100.         delete[] tab;
  101.  
  102.         // 6. tworzymy nową tablicę
  103.         tab = new int[rozmiar];
  104.  
  105.         // 7. przeniesienie zawartości tymczasowej tablicy
  106.         for(unsigned i = 0; i < rozmiar; ++i)
  107.             tab[i] = temp[i];
  108.  
  109.         // 8. zwalniamy pamięć z tablicy tymczasowej
  110.         delete[] temp;
  111.     }
  112. }
  113.  
  114. int main()
  115. {
  116.     Tablica nasza_tablica(6, 10);
  117.     nasza_tablica.wypisz();
  118.     nasza_tablica.zmien_rozmiar(4);
  119.     nasza_tablica.wypisz();
  120.     nasza_tablica.zmien_rozmiar(8);
  121.     nasza_tablica.wypisz();
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment