Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Tablica
- {
- unsigned rozmiar;
- int* tab; // wskaźnik przechowujący elementy tablicy
- public:
- Tablica(unsigned); // konstruktor domyślny (pobiera rozmiar tablicy)
- Tablica(unsigned, int); // konstruktor ustalający wielkość tablicy, a także przypisujący daną wartość do wszystkich komórek
- ~Tablica();
- void zmien_rozmiar(unsigned);
- int pobierz_wartosc(unsigned);
- void ustaw_wartosc(unsigned, int);
- void wypisz();
- };
- Tablica::Tablica(unsigned r) : rozmiar(r)
- {
- tab = new int[rozmiar];
- for(unsigned i = 0; i < rozmiar; ++i)
- tab[i] = 0;
- }
- Tablica::Tablica(unsigned r, int wartosc) : rozmiar(r)
- {
- tab = new int[rozmiar];
- for(unsigned i = 0; i < rozmiar; ++i)
- tab[i] = wartosc;
- }
- Tablica::~Tablica()
- {
- delete[] tab; // zwolnienie pamięci z całej tablicy
- }
- int Tablica::pobierz_wartosc(unsigned i)
- {
- return tab[i];
- }
- void Tablica::ustaw_wartosc(unsigned i, int wartosc)
- {
- tab[i] = wartosc;
- }
- void Tablica::wypisz()
- {
- for(unsigned i = 0; i < rozmiar; ++i)
- cout << tab[i] << '\t';
- cout << endl;
- }
- void Tablica::zmien_rozmiar(unsigned nowy_rozmiar)
- {
- if(nowy_rozmiar < rozmiar) // zmniejszanie tablicy
- {
- // 1. utworzenie tablicy tymczasowej temp
- int* temp = new int[nowy_rozmiar];
- // 2. przeniesienie danych do tablicy tymczasowej
- for(unsigned i = 0; i < nowy_rozmiar; ++i)
- temp[i] = tab[i];
- // 3. usuwanie dotychczasowej tablicy (zwolnienie pamięci)
- delete[] tab;
- // 4. aktualizacja rozmiaru tablicy
- rozmiar = nowy_rozmiar;
- // 5. utworzenie na jej miejscu nowej tablicy o nowym rozmiarze
- tab = new int[rozmiar];
- // 6. przeniesienie danych z tablicy tymczasowej
- for(unsigned i = 0; i < rozmiar; ++i)
- tab[i] = temp[i];
- // 7. usunięcie tablicy tymczasowej
- delete[] temp;
- }
- if(nowy_rozmiar > rozmiar) // zwiększanie tablicy
- {
- // 1. utworzenie tablicy tymczasowej o nowym rozmiarze
- int* temp = new int[nowy_rozmiar];
- // 2. uzupełniamy tablicę tymczasową zerami
- for(unsigned i = 0; i < nowy_rozmiar; ++i)
- temp[i] = 0;
- // 3. przenosimy dane z dotychczasowej tablicy do nowej
- for(unsigned i = 0; i < rozmiar; ++i)
- temp[i] = tab[i];
- // 4. aktualizacja rozmiaru tablicy
- rozmiar = nowy_rozmiar;
- // 5. usuwamy dotychczasową tablicę
- delete[] tab;
- // 6. tworzymy nową tablicę
- tab = new int[rozmiar];
- // 7. przeniesienie zawartości tymczasowej tablicy
- for(unsigned i = 0; i < rozmiar; ++i)
- tab[i] = temp[i];
- // 8. zwalniamy pamięć z tablicy tymczasowej
- delete[] temp;
- }
- }
- int main()
- {
- Tablica nasza_tablica(6, 10);
- nasza_tablica.wypisz();
- nasza_tablica.zmien_rozmiar(4);
- nasza_tablica.wypisz();
- nasza_tablica.zmien_rozmiar(8);
- nasza_tablica.wypisz();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment