StefiIOE

Vozac vezbi OOP

May 12th, 2020
2,632
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Vozac
  7. {
  8.     protected:
  9.     char ime [100];
  10.     int vozrast;
  11.     int trki;
  12.     bool veteran;
  13.     public:
  14.     Vozac(char*ime="", int vozrast=0, int trki=0 , bool veteran = true)
  15.     {
  16.     strcpy(this->ime,ime);
  17.         this->vozrast=vozrast;
  18.         this->trki=trki;
  19.         this->veteran = veteran;
  20.     }
  21.     Vozac(const Vozac &v)
  22.     {
  23.         strcpy(this->ime,v.ime);
  24.         this->vozrast=v.vozrast;
  25.         this->trki=v.trki;
  26.         this->veteran = v.veteran;
  27.     }
  28.     virtual int zarabotuvacka()=0;
  29.     virtual int danok () = 0;
  30.    
  31.     friend ostream &operator<<(ostream &out , const Vozac &v)
  32.     {
  33.     out<<v.ime<<endl<<v.vozrast<<endl<<v.trki<<endl;
  34.         if(v.veteran)
  35.         out<<"VETERAN"<<endl;
  36.         return out;
  37.     }
  38.                    
  39. };
  40. bool operator==(Vozac &l , Vozac &d)
  41. {
  42.     return l.zarabotuvacka()==d.zarabotuvacka();
  43. }
  44.  
  45. class Avtomobilist : public Vozac
  46. {
  47.     private:
  48.     float cena;
  49.     public:
  50.       Avtomobilist(char*ime="", int vozrast=0, int trki=0 , bool veteran = true,float cena = 0.0)
  51.           :Vozac(ime , vozrast, trki , veteran)
  52.     {
  53.     this->cena = cena;
  54.     }
  55.     Avtomobilist(const Avtomobilist &a) :Vozac(a)
  56.     {
  57.         this->cena = a.cena;
  58.     }
  59.     int zarabotuvacka(){return cena/5;}
  60.     int danok()
  61.     {
  62.         if(trki>10)
  63.         {
  64.         return zarabotuvacka() *0.15;
  65.         }
  66.         else return zarabotuvacka ()* 0.10;
  67.     }
  68. };
  69. class Motociklist : public Vozac
  70. {
  71.     private:
  72.     int mokjnost;
  73.     public:
  74.           Motociklist(char*ime="", int vozrast=0, int trki=0 , bool veteran = true,int mokjnost = 0)
  75.           :Vozac(ime , vozrast, trki , veteran)
  76.     {
  77.     this->mokjnost = mokjnost;
  78.     }
  79.     Motociklist(const Motociklist &m) :Vozac(m)
  80.     {
  81.         this->mokjnost = m.mokjnost;
  82.     }
  83.     int zarabotuvacka()
  84.     {
  85.     return mokjnost *20;
  86.        
  87.     }
  88.     int danok ()
  89.     {
  90.         if(veteran){
  91.         return zarabotuvacka() *0.25;
  92.         }
  93.         else return zarabotuvacka() *0.20;
  94.     }
  95.  
  96. };
  97. int soIstaZarabotuvachka (Vozac **vozac, int n , Vozac *v)
  98. {
  99.     int brojac=0;
  100.     for(int i = 0 ; i < n ; i ++)
  101.     {
  102.     if(vozac[i]->zarabotuvacka()==v->zarabotuvacka())
  103.         brojac++;
  104.     }
  105.     return brojac;
  106. }
  107. int main() {
  108.     int n, x;
  109.     cin >> n >> x;
  110.     Vozac **v = new Vozac*[n];
  111.     char ime[100];
  112.     int vozrast;
  113.     int trki;
  114.     bool vet;
  115.     for(int i = 0; i < n; ++i) {
  116.         cin >> ime >> vozrast >> trki >> vet;
  117.         if(i < x) {
  118.             float cena_avto;
  119.             cin >> cena_avto;
  120.             v[i] = new Avtomobilist(ime, vozrast, trki, vet, cena_avto);
  121.         } else {
  122.             int mokjnost;
  123.             cin >> mokjnost;
  124.             v[i] = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  125.         }
  126.     }
  127.     cout << "=== DANOK ===" << endl;
  128.     for(int i = 0; i < n; ++i) {
  129.         cout << *v[i];
  130.         cout << v[i]->danok() << endl;
  131.     }
  132.     cin >> ime >> vozrast >> trki >> vet;
  133.     int mokjnost;
  134.     cin >> mokjnost;
  135.     Vozac *vx = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  136.     cout << "=== VOZAC X ===" << endl;
  137.     cout << *vx;
  138.     cout << "=== SO ISTA ZARABOTUVACKA KAKO VOZAC X ===" << endl;
  139.     cout << soIstaZarabotuvachka(v, n, vx);
  140.     for(int i = 0; i < n; ++i) {
  141.         delete v[i];
  142.     }
  143.     delete [] v;
  144.     delete vx;
  145.     return 0;
  146. }
RAW Paste Data