Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class TablicaInt
- {
- unsigned wielkosc;
- int* tablica;
- public:
- TablicaInt();
- explicit TablicaInt(unsigned w);
- ~TablicaInt();
- void dodaj(int nowy);
- void zmien_rozmiar(unsigned nowy);
- void wypisz() const;
- void usun_dane();
- unsigned rozmiar() const;
- int& operator[](unsigned nr);
- };
- TablicaInt::TablicaInt() : wielkosc(0), tablica(nullptr) {}
- TablicaInt::TablicaInt(unsigned w) : wielkosc(w), tablica(new int[w])
- {
- for(unsigned i = 0; i < w; ++i)
- tablica[i] = 0;
- }
- TablicaInt::~TablicaInt()
- {
- if(tablica != nullptr)
- delete[] tablica;
- cout << "Tablica poprawnie usunieta.\n";
- }
- void TablicaInt::dodaj(int nowy)
- {
- // jeżeli tablica dotychczas jest pusta, alokujemy do niej pamięć dla tablicy jednoelementowej:
- if(tablica == nullptr)
- {
- tablica = new int[1];
- tablica[0] = nowy;
- wielkosc = 1;
- return;
- }
- // w przeciwnym wypadku:
- // tworzymy tablicę tymczasową o rozmiarze dotychczasowej tablicy
- int* temp = new int[wielkosc];
- // kopiujemy zawartość tablicy dotychczasowej do nowej, tymczasowej
- for(unsigned i = 0; i < wielkosc; ++i)
- temp[i] = tablica[i];
- // zwalniamy pamięć z dotychczasowej tablicy
- delete[] tablica;
- // na miejscu tablicy tworzymy nową, o rozmiarze o 1 większym
- tablica = new int[wielkosc + 1];
- // do nowej tablicy kopiujemy zawartość tymczasowej
- for(unsigned i = 0; i < wielkosc; ++i)
- tablica[i] = temp[i];
- // zwalniamy pamięć z tablicy tymczasowej
- delete[] temp;
- // na ostatni element tablicy wpisujemy nową wartość
- tablica[wielkosc] = nowy;
- // zwiększamy wielkość o 1
- ++wielkosc;
- }
- void TablicaInt::zmien_rozmiar(unsigned nowy)
- {
- if(wielkosc==nowy)
- return;
- if(wielkosc == 0)
- {
- wielkosc = nowy;
- tablica = new int[wielkosc];
- for(unsigned i = 0; i < wielkosc; ++i)
- tablica[i] = 0;
- return;
- }
- if(wielkosc<nowy)
- {
- int* temp= new int[wielkosc];
- for(unsigned i=0; i<wielkosc; i++)
- temp[i]=tablica[i];
- delete[] tablica;
- tablica = new int[nowy];
- for (unsigned i=0; i<wielkosc; ++i)
- tablica[i] = temp[i];
- delete [] temp;
- for(unsigned i=wielkosc; i<nowy; i++)
- tablica[i] = 0;
- wielkosc=nowy;
- return;
- }
- if(nowy==0)
- {
- delete[] tablica;
- wielkosc=0;
- return;
- }
- wielkosc=nowy;
- int* temp = new int[wielkosc];
- for (unsigned i=0; i<wielkosc; i++)
- temp[i]= tablica[i];
- delete[] tablica;
- tablica = new int[wielkosc];
- for (unsigned i=0; i<wielkosc; ++i)
- tablica[i] = temp[i];
- delete [] temp;
- }
- void TablicaInt::wypisz() const
- {
- if(wielkosc > 0)
- for(unsigned i = 0; i < wielkosc; ++i)
- cout << tablica[i] << '\t';
- cout << endl;
- }
- void TablicaInt::usun_dane()
- {
- zmien_rozmiar(0);
- }
- unsigned TablicaInt::rozmiar() const
- {
- return wielkosc;
- }
- int& TablicaInt::operator[](unsigned nr)
- {
- return tablica[nr];
- }
- int main()
- {
- TablicaInt tablica(5);
- tablica.wypisz();
- cin >> tablica[2];
- cout << tablica[2];
- tablica.wypisz();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement