Mitrezzz

Возач

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