Advertisement
Guest User

Vozac

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