Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Vozac
- {
- protected:
- char ime[100];
- int vozrast;
- int trki;
- bool vet;
- public:
- // Constructors
- Vozac(){}
- Vozac(const char *ime, int vozrast, int trki, bool vet)
- : vozrast(vozrast), trki(trki), vet(vet) { strcpy(this->ime, ime); }
- virtual ~Vozac(){}
- // Overloaded operators
- friend std::ostream &operator <<(std::ostream &output, const Vozac &ob)
- {
- output << ob.ime << std::endl;
- output << ob.vozrast << std::endl;
- output << ob.trki << std::endl;
- if(ob.vet) output << "VETERAN" << std::endl;
- return output;
- }
- // Functions
- virtual float zarabotuvacka() const = 0;
- virtual float danok() const = 0;
- };
- class Avtomobilist : public Vozac
- {
- private:
- float cena_avto;
- public:
- // Constructors
- Avtomobilist(){}
- Avtomobilist(const char *ime, int vozrast, int trki, bool vet, float cena_avto)
- : Vozac(ime, vozrast, trki, vet), cena_avto(cena_avto){}
- // Functions
- float zarabotuvacka() const override { return (float)cena_avto / 5; }
- float danok() const override
- {
- if(trki > 10) { return zarabotuvacka() * 0.15; }
- else { return zarabotuvacka() * 0.10; }
- }
- };
- class Motociklist : public Vozac
- {
- private:
- int mokjnost;
- public:
- // Constructors
- Motociklist(){}
- Motociklist(const char *ime, int vozrast, int trki, bool vet, int mokjnost)
- : Vozac(ime, vozrast, trki, vet), mokjnost(mokjnost){}
- // Functions
- float zarabotuvacka() const override { return mokjnost * 20; }
- float danok() const override
- {
- if(vet) return zarabotuvacka() * 0.25;
- else return zarabotuvacka() * 0.20;
- }
- };
- bool operator ==(const Vozac &v1, const Vozac &v2) { return v1.zarabotuvacka() == v2.zarabotuvacka(); }
- int soIstaZarabotuvachka(Vozac **niza, int n, Vozac *ob)
- {
- int count = 0;
- for(int i = 0; i < n; i++)
- {
- if(*niza[i] == *ob) count++;
- }
- return count;
- }
- int main() {
- int n, x;
- cin >> n >> x;
- Vozac **v = new Vozac*[n];
- char ime[100];
- int vozrast;
- int trki;
- bool vet;
- for(int i = 0; i < n; ++i) {
- cin >> ime >> vozrast >> trki >> vet;
- if(i < x) {
- float cena_avto;
- cin >> cena_avto;
- v[i] = new Avtomobilist(ime, vozrast, trki, vet, cena_avto);
- } else {
- int mokjnost;
- cin >> mokjnost;
- v[i] = new Motociklist(ime, vozrast, trki, vet, mokjnost);
- }
- }
- cout << "=== DANOK ===" << endl;
- for(int i = 0; i < n; ++i) {
- cout << *v[i];
- cout << v[i]->danok() << endl;
- }
- cin >> ime >> vozrast >> trki >> vet;
- int mokjnost;
- cin >> mokjnost;
- Vozac *vx = new Motociklist(ime, vozrast, trki, vet, mokjnost);
- cout << "=== VOZAC X ===" << endl;
- cout << *vx;
- cout << "=== SO ISTA ZARABOTUVACKA KAKO VOZAC X ===" << endl;
- cout << soIstaZarabotuvachka(v, n, vx);
- for(int i = 0; i < n; ++i) {
- delete v[i];
- }
- delete [] v;
- delete vx;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement