MeehoweCK

Untitled

Jun 8th, 2024
436
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.23 KB | None | 0 0
  1. #include "rabatek.h"
  2.  
  3. Rabatek::Rabatek(int s, int w) : szerokosc(s), wysokosc(w)
  4. {
  5.     tab = new Kwiatek**[szerokosc];
  6.     for (int i=0; i<szerokosc; i++)
  7.     {
  8.         tab[i] = new Kwiatek*[wysokosc] {nullptr};
  9.     }
  10. }
  11.  
  12. Rabatek::Rabatek(const Rabatek& r) : szerokosc(r.szerokosc), wysokosc(r.wysokosc) {
  13.     tab = new Kwiatek * *[szerokosc];
  14.     for (int i = 0; i < szerokosc; i++) {
  15.         tab[i] = new Kwiatek * [wysokosc];
  16.         for (int j = 0; j < wysokosc; j++) {
  17.             if (r.tab[i][j] != nullptr) {
  18.                 tab[i][j] = r.tab[i][j]->kopiuj();
  19.             }
  20.             else {
  21.                 tab[i][j] = nullptr;
  22.             }
  23.         }
  24.     }
  25. }
  26.  
  27. Rabatek& Rabatek::operator=(const Rabatek& r)
  28. {
  29.     if (this == &r)
  30.     {
  31.         return *this;
  32.     }
  33.  
  34.     for (int i=0; i<szerokosc; i++)
  35.     {
  36.         for (int j=0; j<wysokosc; j++)
  37.         {
  38.             delete tab[i][j];
  39.             tab[i][j] = nullptr;
  40.         }
  41.         delete[] tab[i];
  42.     }
  43.     delete[] tab;
  44.  
  45.     szerokosc = r.szerokosc;
  46.     wysokosc = r.wysokosc;
  47.     tab = new Kwiatek**[szerokosc];
  48.     for (int i=0; i<szerokosc; i++)
  49.     {
  50.         tab[i] = new Kwiatek*[wysokosc];
  51.         for (int j=0; j<wysokosc; j++)
  52.         {
  53.             if (r.tab[i][j] == nullptr) {
  54.                 tab[i][j] = nullptr;
  55.             }
  56.             else {
  57.                 tab[i][j] = r.tab[i][j]->kopiuj();
  58.             }
  59.         }
  60.     }
  61.     return *this;
  62. }
  63.  
  64. void Rabatek::posadz(int x, int y, Kwiatek* k)
  65. {
  66.     if (x >= 0 && x<szerokosc && y >= 0 && y<wysokosc)
  67.     {
  68.         delete tab[x][y];
  69.         tab[x][y] = k;
  70.     }
  71. }
  72.  
  73. ostream& operator<<(ostream &os, const Rabatek &r)
  74. {
  75.     for (int i=0; i<r.szerokosc; i++)
  76.     {
  77.         for (int j=0; j<r.wysokosc; j++)
  78.         {
  79.             if(r.tab[i][j] != nullptr)
  80.             {
  81.                 r.tab[i][j]->drukuj(os);
  82.             }
  83.             else
  84.             {
  85.                 os << ". ";
  86.             }
  87.         }
  88.         os << endl;
  89.     }
  90.     return os;
  91. }
  92.  
  93. Rabatek::~Rabatek()
  94. {
  95.     for (int i=0; i<szerokosc; i++)
  96.     {
  97.         for (int j=0; j<wysokosc; j++)
  98.         {
  99.             delete tab[i][j];
  100.         }
  101.         delete[] tab[i];
  102.     }
  103.     delete[] tab;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment