Advertisement
add1ctus

3. Возач

May 15th, 2015
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  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 brojNaTrki;
  12.     bool eVeteran;
  13. public:
  14.     Vozac(){}
  15.     Vozac(char *i, int v, int b, bool e)
  16.     {
  17.         strcpy(ime,i);
  18.         vozrast=v;
  19.         brojNaTrki=b;
  20.         eVeteran=e;
  21.     }
  22.     friend ostream &operator<<(ostream &output, const Vozac &rhs)
  23.     {
  24.         output<<rhs.ime<<endl<<rhs.vozrast<<endl<<rhs.brojNaTrki<<endl;
  25.         if(rhs.eVeteran)
  26.             output<<"VETERAN"<<endl;
  27.         return output;
  28.     }
  29.     bool operator==(Vozac &rhs)
  30.     {
  31.         return this->zarabotuvacka()==rhs.zarabotuvacka();
  32.     }
  33.     virtual float zarabotuvacka(){}
  34.     virtual float danok(){}
  35. };
  36.  
  37. class Avtomobilist:public Vozac
  38. {
  39.     float cenaNaAvtomobil;
  40. public:
  41.     Avtomobilist(){}
  42.     Avtomobilist(char *i, int v, int t, bool e, float c):Vozac(i,v,t,e)
  43.     {
  44.         cenaNaAvtomobil=c;
  45.     }
  46.     float zarabotuvacka()
  47.     {
  48.         return cenaNaAvtomobil/5;
  49.     }
  50.     float danok()
  51.     {
  52.         if(brojNaTrki>10)
  53.             return zarabotuvacka()*0.15;
  54.         return zarabotuvacka()*0.1;
  55.     }
  56. };
  57.  
  58. class Motociklist:public Vozac
  59. {
  60.     int mokjnostNaMotor;
  61. public:
  62.     Motociklist(){}
  63.     Motociklist(char *i, int v, int t, bool e, int m):Vozac(i,v,t,e)
  64.     {
  65.         mokjnostNaMotor=m;
  66.     }
  67.     float zarabotuvacka()
  68.     {
  69.         return mokjnostNaMotor*20;
  70.     }
  71.     float danok()
  72.     {
  73.         if(eVeteran)
  74.             return zarabotuvacka()*0.25;
  75.         return zarabotuvacka()*0.2;
  76.     }
  77. };
  78.  
  79. int soIstaZarabotuvachka(Vozac **v, int n, Vozac *vozac)
  80. {
  81.     int result=0;
  82.     for(int i=0;i<n;i++)
  83.         if(*vozac==*v[i])
  84.             result++;
  85.     return result;
  86. }
  87.  
  88. int main() {
  89.     int n, x;
  90.     cin >> n >> x;
  91.     Vozac **v = new Vozac*[n];
  92.     char ime[100];
  93.     int vozrast;
  94.     int trki;
  95.     bool vet;
  96.     for(int i = 0; i < n; ++i) {
  97.         cin >> ime >> vozrast >> trki >> vet;
  98.         if(i < x) {
  99.             float cena_avto;
  100.             cin >> cena_avto;
  101.             v[i] = new Avtomobilist(ime, vozrast, trki, vet, cena_avto);
  102.         } else {
  103.             int mokjnost;
  104.             cin >> mokjnost;
  105.             v[i] = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  106.         }
  107.     }
  108.     cout << "=== DANOK ===" << endl;
  109.     for(int i = 0; i < n; ++i) {
  110.         cout << *v[i];
  111.         cout << v[i]->danok() << endl;
  112.     }
  113.     cin >> ime >> vozrast >> trki >> vet;
  114.     int mokjnost;
  115.     cin >> mokjnost;
  116.     Vozac *vx = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  117.     cout << "=== VOZAC X ===" << endl;
  118.     cout << *vx;
  119.     cout << "=== SO ISTA ZARABOTUVACKA KAKO VOZAC X ===" << endl;
  120.     cout << soIstaZarabotuvachka(v, n, vx);
  121.     for(int i = 0; i < n; ++i) {
  122.         delete v[i];
  123.     }
  124.     delete [] v;
  125.     delete vx;
  126.     return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement