Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // main.cpp
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include "tablica.hpp"
- using namespace std;
- int main()
- {
- Tablica tablica(5); // tworzy tablicę pięcioelementową
- tablica.wypisz();
- tablica.zmien_rozmiar(10);
- tablica.wypisz();
- tablica.zmien_rozmiar(7);
- srand(static_cast<unsigned>(time(nullptr)));
- const unsigned rozmiar = tablica.get_rozmiar();
- for(unsigned i = 0; i < rozmiar; ++i)
- {
- tablica[i] = rand() % 100;
- }
- cout << tablica << endl;
- tablica.zmien_rozmiar(15);
- cout << tablica << endl;
- return 0;
- }
- // tablica.hpp
- #include <iostream>
- using namespace std;
- class Tablica
- {
- friend ostream& operator<<(ostream&, const Tablica&);
- private:
- int* dane;
- unsigned rozmiar;
- public:
- Tablica(); // tworzy pusty obiekt (pustą tablicę)
- ~Tablica();
- explicit Tablica(unsigned); // tworzy tablicę o podanym rozmiarze
- void dodaj_element(int);
- void wypisz() const;
- int get_wartosc(unsigned) const;
- void set_wartosc(unsigned, int);
- unsigned get_rozmiar() const;
- void clear();
- void zmien_rozmiar(unsigned);
- int& operator[](unsigned el) { return dane[el]; }
- };
- Tablica::Tablica() : dane(nullptr), rozmiar(0) {}
- /*
- Tablica::Tablica()
- {
- dane = nullptr;
- rozmiar = 0;
- }
- */
- Tablica::Tablica(unsigned size) : dane(new int[size]), rozmiar(size)
- {
- for(unsigned i = 0; i < size; ++i)
- dane[i] = 0;
- }
- void Tablica::dodaj_element(int num)
- {
- //1.
- int* temp = new int[rozmiar];
- //2.
- for(unsigned i = 0; i < rozmiar; ++i)
- temp[i] = dane[i];
- //3.
- delete[] dane;
- //4.
- dane = new int[rozmiar + 1];
- //5.
- for(unsigned i = 0; i < rozmiar; ++i)
- {
- dane[i] = temp[i];
- }
- //6.
- delete[] temp;
- //7.
- dane[rozmiar] = num;
- rozmiar++;
- }
- void Tablica::wypisz() const
- {
- for(unsigned i = 0; i < rozmiar; i++)
- {
- cout << dane[i] << " ";
- }
- cout << endl;
- }
- Tablica::~Tablica()
- {
- delete[] dane;
- cout << "Zniszczono tablice";
- }
- int Tablica::get_wartosc(unsigned nr) const
- {
- return dane[nr];
- }
- void Tablica::set_wartosc(unsigned index, int num)
- {
- dane[index] = num;
- }
- unsigned Tablica::get_rozmiar() const
- {
- return rozmiar;
- }
- void Tablica::clear()
- {
- delete[] dane;
- rozmiar = 0;
- }
- void Tablica::zmien_rozmiar(unsigned newSize)
- {
- if(newSize == rozmiar)
- return;
- if(newSize > rozmiar)
- {
- int* temp = new int[rozmiar];
- for(unsigned i = 0; i < rozmiar; ++i)
- {
- temp[i] = dane[i];
- }
- delete[] dane;
- dane = new int[newSize];
- for(unsigned i = 0; i < rozmiar; ++i)
- {
- dane[i] = temp[i];
- }
- delete[] temp;
- for(unsigned i = rozmiar; i < newSize; ++i)
- {
- dane[i] = 0;
- }
- rozmiar = newSize;
- }
- else
- {
- int* temp = new int[newSize];
- for(unsigned i = 0; i < newSize; ++i)
- {
- temp[i] = dane[i];
- }
- delete[] dane;
- dane = new int[newSize];
- for(unsigned i = 0; i < newSize; ++i)
- {
- dane[i] = temp[i];
- }
- delete[] temp;
- rozmiar = newSize;
- }
- }
- ostream& operator<<(ostream& strumien, const Tablica& obiekt)
- {
- for(unsigned i = 0; i < obiekt.rozmiar; ++i)
- strumien << obiekt.dane[i] << '\t';
- return strumien;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement