#include #include using namespace std; class Vozilo { public: string Vrsta() const { return "nemamo pojma"; } int BrojVrata() const { return 4; } int BrojTockova() const { return 4; } int BrojSedista() const { return 4; } }; class Automobil : public Vozilo { public: string Vrsta() const { return "Automobil"; } int BrojVrata() const { return 4; } int BrojTockova() const { return 4; } int BrojSedista() const { return 4; } }; class Kamion : public Vozilo { public: string Vrsta() const { return "Kamion"; } int BrojVrata() const { return 2; } int BrojTockova() const { return 6; } int BrojSedista() const { return 3; } }; class Perionica { public: Perionica() : prvoVozilo(0), prvoSlobodnoMesto(0) {} void DodajVoziloURed( Vozilo v ) { int narednoSlobodnoMesto = (prvoSlobodnoMesto + 1) % max_vozila; if( prvoVozilo == narednoSlobodnoMesto ) cout << "Nema vise mesta, vozilo je otislo u drugu perionicu." << endl; else{ red[prvoSlobodnoMesto] = v; prvoSlobodnoMesto = narednoSlobodnoMesto; } } bool ImaVozilaURedu() const { return prvoVozilo != prvoSlobodnoMesto; } Vozilo IzdvojiPrvoVozilo() { Vozilo v = red[prvoVozilo]; prvoVozilo = (prvoVozilo + 1) % max_vozila; return v; } void OperiPrvoVozilo() { if( ImaVozilaURedu() ){ Vozilo v = IzdvojiPrvoVozilo(); cout << "Na redu je jedan " << v.Vrsta() << "." << endl; cout << "Prvo peremo vrata, ima ih " << v.BrojVrata() << endl; cout << "Zatim prelazimo na tockove, ima ih " << v.BrojTockova() << endl; cout << "Sada su na redu sedista, njih " << v.BrojSedista() << endl; cout << "Gotovo, za sada." << endl; } } private: static const int max_vozila = 300; Vozilo red[max_vozila]; int prvoVozilo; int prvoSlobodnoMesto; }; main(){ Perionica kodZike; kodZike.DodajVoziloURed( Automobil() ); kodZike.DodajVoziloURed( Kamion() ); while( kodZike.ImaVozilaURedu() ){ kodZike.OperiPrvoVozilo(); cout << endl; } return 0; }