Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // main.cpp
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include "Tablica.hpp"
- #include "Head.hpp"
- using namespace std;
- int main()
- {
- srand(static_cast<unsigned>(time(nullptr)));
- int wielkosc_tablicy;
- cin >> wielkosc_tablicy;
- Tablica nasza_tablica(wielkosc_tablicy);
- nasza_tablica.wypisz_tablice();
- cout << "\nWpisz wartosc, jaka chcesz dodac do tablicy: ";
- int nowa_wartosc;
- cin >> nowa_wartosc;
- nasza_tablica.dodaj_wartosc(nowa_wartosc);
- nasza_tablica.wypisz_tablice();
- cout << "\nWpisz nowy rozmiar dla istniejącej tablicy: ";
- int nowy_rozmiar;
- cin >>nowy_rozmiar;
- nasza_tablica.zmien_rozm(nowy_rozmiar);
- nasza_tablica.wypisz_tablice();
- cout <<"\nWpisz rozmiar tablicy, która będzie dodana do istniejącej: ";
- int rozm_dod;
- cin >>rozm_dod;
- Tablica nowa_tablica(rozm_dod); // tworzymy nową tablicę, która ma zostać dodana
- nasza_tablica.dodaj_tablice(&nowa_tablica); // dodawanie tablicy
- nasza_tablica.wypisz_tablice();
- nasza_tablica.pomnoz_wartosci(2); // zwiększa wartości wszystkich elementów tablicy x2
- nasza_tablica.wypisz_tablice();
- return 0;
- }
- // Tablica.cpp
- #include <cstdlib>
- #include <iostream>
- #include "Head.hpp"
- #include "Tablica.hpp"
- using namespace std;
- /*class Tablica
- {
- private:
- int* tab; //zmienne lepiej definiować w privite
- int rozmiar;
- public:
- Tablica(int);
- ~Tablica();
- void dodaj_wartosc(int); //obiekty lepiej definiowac w public
- void wypisz_tablice();
- void zmien_rozm(int);
- void dodaj_tablice(Tablica*);
- void pomnoz_wartosci(int);
- };*/
- Tablica::Tablica(int wielkosc) : rozmiar(wielkosc) // definicja konstruntora + def. rozmiaru
- {
- tab = new int[rozmiar]; // nie trzeba więcej wstawiać int*
- for(int i = 0; i < rozmiar; ++i)
- tab[i] = rand() % (MAKS + 1);
- }
- Tablica::~Tablica()
- {
- delete[] tab;
- cout << "Usunieto tablice\n";
- }
- void Tablica::dodaj_wartosc(int wartosc) //nowa wartosc (100)
- {
- int* tab1 = new int[rozmiar];
- for(int i = 0; i < rozmiar; ++i)
- tab1[i] = tab[i];
- delete[] tab;
- tab = new int[rozmiar + 1];
- tab[rozmiar] = wartosc;
- for(int i = 0; i < rozmiar; ++i)
- tab[i] = tab1[i];
- delete[] tab1;
- ++rozmiar; //mam wewnącz klasy dostęp do privite
- }
- void Tablica::zmien_rozm(int rozm2)
- {
- if(rozm2 < rozmiar)
- {
- int* temp = new int[rozm2];
- for(int i = 0; i < rozm2; ++i)
- temp[i] = tab[i];
- delete[] tab;
- tab = new int[rozm2];
- for(int i = 0; i < rozm2; ++i)
- tab[i] = temp[i];
- delete[] temp;
- }
- if(rozm2 > rozmiar)
- {
- int* temp = new int[rozmiar];
- for(int i = 0; i < rozmiar; ++i)
- temp[i] = tab[i];
- delete[] tab;
- tab = new int[rozm2];
- for(int i = 0; i < rozmiar; ++i)
- tab[i] = temp[i];
- for(int i = rozmiar; i < rozm2; ++i)
- tab[i] = 0;
- delete[] temp;
- }
- rozmiar = rozm2;
- }
- void Tablica::wypisz_tablice()
- {
- for(int i = 0; i < rozmiar; ++i)
- cout << tab[i] <<'\t';
- }
- void Tablica::dodaj_tablice(Tablica* nowa)
- {
- int* temp = new int[rozmiar]; // tworzymy tablicę tymczasową, która będzie przechowywać wartości z tablicy A
- for(int i = 0; i < rozmiar; ++i)
- temp[i] = tab[i]; // kopiujemy dane z tablicy A do tablicy tymczasowej
- delete[] tab; // usuwamy tablicę A
- tab = new int[rozmiar + nowa->rozmiar]; // na jej miejsce tworzymy nową, większą o rozmiar tablicy dodawanej (B)
- for(int i = 0; i < rozmiar; ++i)
- tab[i] = temp[i]; // do nowej tablicy A dodajemy dane z tymczasowej
- delete[] temp; // tablica tymczasowa już nie jest potrzebna, usuwamy ją
- for(int i = 0; i < nowa->rozmiar; ++i)
- tab[i + rozmiar] = nowa->tab[i]; // do nowej tablicy A dodajemy elementy z tablicy B
- rozmiar += nowa->rozmiar; // aktualizujemy rozmiar tablicy (jest większy o rozmiar tablicy B)
- }
- void Tablica::pomnoz_wartosci(int mnoznik)
- {
- // miejsce na Twój kod
- }
- // Tablica.hpp
- #ifndef TABLICA_H
- #define TABLICA_H
- class Tablica
- {
- private:
- int* tab; //zmienne lepiej definiować w privite
- int rozmiar;
- public:
- Tablica(int);
- ~Tablica();
- void dodaj_wartosc(int); //obiekty lepiej definiowac w public
- void wypisz_tablice();
- void zmien_rozm(int);
- void dodaj_tablice(Tablica*);
- void pomnoz_wartosci(int);
- };
- #endif /* Tablica_hpp */
- // Head.hpp
- #ifndef Head_hpp
- #define Head_hpp
- const int MAKS = 100;
- #endif /* Head_hpp */
Advertisement
Add Comment
Please, Sign In to add comment