Advertisement
jordanov

3.Возач

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