#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;
}