Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string>
- #include <iostream>
- namespace Baze
- {
- unsigned long pocetObjektu=0;
- class Objekt
- {
- private:
- unsigned short _inventarnicislo;
- public:
- unsigned short VratInventarniCislo() const
- {
- return _inventarnicislo;
- }
- virtual void VypisInformace() const = 0;
- friend bool operator>(const Objekt& a, const Objekt& b);
- Objekt();
- ~Objekt();
- };
- bool operator>(const Objekt& a, const Objekt& b){
- return a.VratInventarniCislo() > b.VratInventarniCislo();
- }
- }
- Baze::Objekt::Objekt()
- {
- pocetObjektu++;
- _inventarnicislo = pocetObjektu;
- ;
- }
- Baze::Objekt::~Objekt()
- {
- pocetObjektu--;
- }
- namespace Objekty
- {
- namespace Nabytek
- {
- class Stul : public Baze::Objekt
- {
- private:
- std::string barva;
- std::string material;
- public:
- Stul(std::string b, std::string m);
- ~Stul();
- void VypisInformace() const override;
- };
- Stul::Stul(std::string b, std::string m)
- {
- material = m, barva = b;
- }
- Stul::~Stul()
- {
- }
- void Stul::VypisInformace() const
- {
- std::cout << "Objekt s inventarnim cislem: " << VratInventarniCislo()
- << " je typu Stul, barvy " << barva << " z materialu " << material << std::endl;
- }
- class Zidle : public Baze::Objekt
- {
- private:
- bool otocna;
- bool ergonomicka;
- public:
- Zidle(bool otacise,bool ergonomi);
- ~Zidle();
- void Zidle::VypisInformace() const override
- {
- std::cout << "Objekt s inventarnim cislem: " << VratInventarniCislo()
- << " je typu Zidle, otaci se <" << otocna << ">, Je ergonomicka <" << ergonomicka<<">"<< std::endl;
- }
- };
- Zidle::Zidle(bool otacise,bool ergonomi)
- {
- otocna = otacise;
- ergonomicka = ergonomi;
- }
- Zidle::~Zidle()
- {
- }
- class Skrin : public Baze::Objekt
- {
- typedef size_t rozmer;
- private:
- std::string material;
- rozmer vyska;
- rozmer sirka;
- rozmer hloubka;
- public:
- Skrin(std::string m, rozmer v, rozmer s, rozmer h);
- ~Skrin();
- void Skrin::VypisInformace() const override
- {
- std::cout << "Objekt s inventarnim cislem: " << VratInventarniCislo()
- << " je typu Skrin, vysky " << vyska << " sirky " << sirka << " hloubky" << std::endl
- << "z materialu " << material << std::endl;
- }
- };
- Skrin::Skrin(std::string m, rozmer v, rozmer s, rozmer h)
- {
- material = m;
- vyska = v;
- sirka = s;
- hloubka = h;
- }
- Skrin::~Skrin()
- {
- }
- }
- class Inventar
- {
- private:
- const Baze::Objekt * *pole;
- int pocet=0;
- public:
- unsigned short NajdiLimit() const;
- void Pridej(const Baze::Objekt* objekt);
- Inventar(size_t pocet);
- ~Inventar();
- void VypisInventar() const;
- };
- Inventar::Inventar(size_t pocet){
- pole = new const Baze::Objekt*[pocet];
- for (int i = 0; i < pocet; i++){
- pole[i] = nullptr;
- }
- }
- Inventar::~Inventar(){
- delete[] pole;
- }
- void Inventar::Pridej(const Baze::Objekt* const objekt){
- for (int i = 0; i < sizeof(pole); i++){
- if (pole[i] == nullptr){
- pole[i] = objekt;
- pocet++;
- break;
- }
- }
- }
- void Inventar::VypisInventar() const{
- std::cout << "Pocet polozek v Inventari: " << pocet << std::endl<<"Inventar: "<<std::endl;
- for (int i = 0; i < sizeof(pole); i++){
- if (pole[i] != nullptr){
- pole[i]->VypisInformace();
- }
- else{
- break;
- }
- }
- }
- unsigned short Inventar::NajdiLimit() const
- {
- short maximum = 0;
- for (size_t i = 1; i < pocet; i++)
- {
- if (pole[i]>pole[i-1])
- {
- maximum = pole[i]->VratInventarniCislo();
- }
- }
- return maximum;
- }
- }
- int main()
- {
- using namespace std;
- Objekty::Nabytek::Stul* stul;
- stul = new Objekty::Nabytek::Stul("cervena", "drevo");
- stul->VypisInformace();
- Objekty::Nabytek::Zidle* zidle;
- zidle = new Objekty::Nabytek::Zidle(true, "drevo");
- zidle->VypisInformace();
- Objekty::Nabytek::Skrin* skrin;
- skrin=new Objekty::Nabytek::Skrin("ocel", 200, 100, 50);
- skrin->VypisInformace();
- Objekty::Inventar inventory(10);
- inventory.Pridej(stul);
- inventory.Pridej(zidle);
- inventory.Pridej(skrin);
- inventory.VypisInventar();
- cout << "Limit je: " << inventory.NajdiLimit() << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement