#include using namespace std; class HotelskaRezervacija { private: int denovi, lica; string ime; public: HotelskaRezervacija() {} HotelskaRezervacija(int _denovi, int _lica, string _ime) { denovi = _denovi; lica = _lica; ime = _ime; } virtual int vratiCena() { return denovi * lica * 25; } virtual int vratiCena(int uplata) { if(uplata >= vratiCena()) { return uplata - vratiCena(); } else { cout << "Ne se dovolno parite, treba da se plati: " << vratiCena() << endl; return -1; } } int get_lica() { return lica; } int get_denovi() { return denovi; } }; class Polupansion : public HotelskaRezervacija { private: public: Polupansion() : HotelskaRezervacija(){} Polupansion(int _denovi, int _lica, string _ime) : HotelskaRezervacija(_denovi, _lica, _ime){ } int vratiCena() override { return HotelskaRezervacija::vratiCena() + get_lica() * get_denovi() * 5; } int vratiCena(int uplata) override { if(uplata >= vratiCena()) { return uplata - vratiCena(); } else { cout << "Treba da se plati: " << vratiCena() << endl; return -1; } } }; class Hotel { private: string ime; int saldo; public: Hotel() {} Hotel(string _ime, int _saldo) { ime = _ime; saldo = _saldo; } void uplatiRezervacija(HotelskaRezervacija &hr, int uplata) { int cena = hr.vratiCena(uplata); if(cena == -1) { cout << "NE USPESNA REZERVACIJA" << endl; } else { cout << "USPESNA REZERVACIJA" << endl; cout << cena << endl; saldo += uplata; } } }; int main() { HotelskaRezervacija *hr = new Polupansion(5, 5, "Josif"); Hotel h("marriot", 0); h.uplatiRezervacija(*hr, 1000); return 0; }