Advertisement
LegoDrifter

Vozac

May 19th, 2020
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.67 KB | None | 0 0
  1. // vashiot kod ovde
  2. #include <iostream>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. class Vozac{
  7. protected:
  8.     char ime[100];
  9.     int vozrast;
  10.     int brTrki;
  11.     bool dali_e_veteran;
  12. public:
  13.     Vozac(char *ime="",int vozrast=0,int brTrki=0,bool dali_e_veteran=false)
  14.     {
  15.         strcpy(this->ime,ime);
  16.         this->vozrast=vozrast;
  17.         this->brTrki=brTrki;
  18.         this->dali_e_veteran=dali_e_veteran;
  19.     }
  20.     Vozac(Vozac &v)
  21.     {
  22.          strcpy(this->ime,v.ime);
  23.         this->vozrast=v.vozrast;
  24.         this->brTrki=v.brTrki;
  25.         this->dali_e_veteran=v.dali_e_veteran;
  26.     }
  27.  
  28.     friend ostream &operator<<(ostream &out, Vozac &v)
  29.     {
  30.         out<<v.ime<<endl;
  31.         out<<v.vozrast<<endl;
  32.         out<<v.brTrki<<endl;
  33.         if(v.dali_e_veteran==1)
  34.             out<<"VETERAN"<<endl;
  35.  
  36.         return out;
  37.     }
  38.     virtual int zarabotuvacka()=0;
  39.     virtual int danok()=0;
  40.     virtual ~Vozac(){}
  41. };
  42. class Avtomobilist:public Vozac{
  43. private:
  44.     float cena_na_avto;
  45. public:
  46.     Avtomobilist(char *ime="",int vozrast=0,int brTrki=0,bool dali_e_veteran=false
  47.                  ,float cena_na_avto=0.0)
  48.                 :Vozac(ime,vozrast,brTrki,dali_e_veteran)
  49.                 {
  50.                     this->cena_na_avto=cena_na_avto;
  51.                 }
  52.     int zarabotuvacka()
  53.     {
  54.         return cena_na_avto/5;
  55.     }
  56.     int danok()
  57.     {
  58.         if(brTrki>10)
  59.         {
  60.             return zarabotuvacka()*0.15;
  61.         }
  62.         else return zarabotuvacka()*0.10;
  63.     }
  64.  
  65.  
  66. };
  67.  
  68. class Motociklist:public Vozac{
  69. private:
  70.     int moknost;
  71. public:
  72.     Motociklist(char *ime="",int vozrast=0,int brTrki=0,bool dali_e_veteran=false,
  73.                  int moknost=0):Vozac(ime,vozrast,brTrki,dali_e_veteran)
  74.                  {
  75.                      this->moknost=moknost;
  76.                  }
  77.     int zarabotuvacka()
  78.     {
  79.         return moknost*20;
  80.     }
  81.     int danok()
  82.     {
  83.         if(dali_e_veteran==true)
  84.         {
  85.             return zarabotuvacka()*0.25;
  86.         }
  87.         else return zarabotuvacka()*0.20;
  88.     }
  89.  
  90.  
  91. };
  92. bool operator==(Vozac *v,Vozac &v1) // Ovde mora vtoroto da e referensa, don't ask why.
  93. {
  94.     if(v->zarabotuvacka()==v1.zarabotuvacka())
  95.         return true;
  96.     else return
  97.         false;
  98. }
  99. int soIstaZarabotuvachka(Vozac **v,int n,Vozac *v1)
  100. {
  101.     int brojac=0;
  102.     for(int i=0;i<n;i++)
  103.     {
  104.         if(v[i]==*v1) //Tuka vtoroto mislam deka go dereferensirame bidejki sporeduvame so element od niza.
  105.             // mora ovde *v1 bidejki ako nema * ce ja zeme default zarabotuvackata sekogas
  106.             brojac++;
  107.  
  108.     }
  109.     return brojac;
  110.     // Ako sve prethodno vi bese tocno osven ova funkcija ne se sekirajte decki ima nadez za vas.
  111.  
  112. }
  113.  
  114. int main() {
  115.     int n, x;
  116.     cin >> n >> x;
  117.     Vozac **v = new Vozac*[n];
  118.     char ime[100];
  119.     int vozrast;
  120.     int trki;
  121.     bool vet;
  122.     for(int i = 0; i < n; ++i) {
  123.         cin >> ime >> vozrast >> trki >> vet;
  124.         if(i < x) {
  125.             float cena_avto;
  126.             cin >> cena_avto;
  127.             v[i] = new Avtomobilist(ime, vozrast, trki, vet, cena_avto);
  128.         } else {
  129.             int mokjnost;
  130.             cin >> mokjnost;
  131.             v[i] = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  132.         }
  133.     }
  134.     cout << "=== DANOK ===" << endl;
  135.     for(int i = 0; i < n; ++i) {
  136.         cout << *v[i];
  137.         cout << v[i]->danok() << endl;
  138.     }
  139.     cin >> ime >> vozrast >> trki >> vet;
  140.     int mokjnost;
  141.     cin >> mokjnost;
  142.     Vozac *vx = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  143.     cout << "=== VOZAC X ===" << endl;
  144.     cout << *vx;
  145.     cout << "=== SO ISTA ZARABOTUVACKA KAKO VOZAC X ===" << endl;
  146.     cout << soIstaZarabotuvachka(v, n, vx);
  147.     for(int i = 0; i < n; ++i) {
  148.         delete v[i];
  149.     }
  150.     delete [] v;
  151.     delete vx;
  152.     return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement