MeehoweCK

Untitled

Mar 22nd, 2021
678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class WektorInt
  6. {
  7.     int* tablica;
  8.     unsigned rozmiar;
  9. public:
  10.     WektorInt();
  11.     explicit WektorInt(unsigned);
  12.     WektorInt(unsigned, int);
  13.     ~WektorInt();
  14.     int get_value(unsigned) const;
  15.     void set_value(unsigned, int);
  16.     void dodaj_na_koniec(int);
  17.     unsigned size() const;
  18. };
  19.  
  20. WektorInt::WektorInt() : tablica(nullptr), rozmiar(0)
  21. {
  22.     // tworzymy pusty wektor
  23. }
  24.  
  25. WektorInt::WektorInt(unsigned n) : rozmiar(n), tablica(new int[n])
  26. {
  27.     // tworzymy wektor o podanym rozmiarze
  28. }
  29.  
  30. WektorInt::WektorInt(unsigned n, int wartosc) : rozmiar(n), tablica(new int[n])
  31. {
  32.     for(unsigned i = 0; i < n; ++i)
  33.         tablica[i] = wartosc;
  34. }
  35.  
  36. WektorInt::~WektorInt()
  37. {
  38.     if(tablica)
  39.         delete[] tablica;
  40.     cout << "Wektor zostal usuniety\n";
  41. }
  42.  
  43. int WektorInt::get_value(unsigned pozycja) const
  44. {
  45.     if(pozycja < rozmiar)
  46.         return tablica[pozycja];
  47.     return 0;
  48. }
  49.  
  50. void WektorInt::set_value(unsigned pozycja, int wartosc)
  51. {
  52.     if(pozycja < rozmiar)
  53.         tablica[pozycja] = wartosc;
  54. }
  55.  
  56. unsigned WektorInt::size() const
  57. {
  58.     return rozmiar;
  59. }
  60.  
  61. void WektorInt::dodaj_na_koniec(int wartosc)
  62. {
  63.     if(tablica == nullptr)
  64.     {
  65.         tablica = new int[1];
  66.         tablica[0] = wartosc;
  67.         rozmiar = 1;
  68.     }
  69.     else
  70.     {
  71.         // 1. tworzymy tablicę tymczasową
  72.         int* temp = new int[rozmiar];
  73.  
  74.         // 2. kopiujemy do tablicy tymczasowej całą dotychczasową zawartość
  75.         for(unsigned i = 0; i < rozmiar; ++i)
  76.             temp[i] = tablica[i];
  77.  
  78.         // 3. zwalniamy pamięć z dotychczasowej tablicy
  79.         delete[] tablica;
  80.  
  81.         // 4. tworzymy nową tablicę, o rozmiarze większym o 1
  82.         tablica = new int[rozmiar + 1];
  83.  
  84.         // 5. przenosimy zawartość tablicy tymczasowej do nowej
  85.         for(unsigned i = 0; i < rozmiar; ++i)
  86.             tablica[i] = temp[i];
  87.  
  88.         // 6. zwalniamy pamięć z tablicy tymczasowej
  89.         delete[] temp;
  90.  
  91.         // 7. zwiększamy rozmiar o 1
  92.         ++rozmiar;
  93.  
  94.         // 8. na ostatni element wstawiamy nową wartość
  95.         tablica[rozmiar - 1] = wartosc;
  96.     }
  97. }
  98.  
  99. int main()
  100. {
  101.     WektorInt wektor(6, 3);
  102.     wektor.set_value(2, 10);
  103.  
  104.     unsigned n = wektor.size();
  105.     for(unsigned i = 0; i < n; ++i)
  106.         cout << wektor.get_value(i) << '\t';
  107.     cout << endl;
  108.  
  109.     wektor.dodaj_na_koniec(50);
  110.  
  111.     n = wektor.size();
  112.     for(unsigned i = 0; i < n; ++i)
  113.         cout << wektor.get_value(i) << '\t';
  114.     cout << endl;
  115.     return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment