kristina7

Возач

Apr 22nd, 2016
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.13 KB | None | 0 0
  1. /*Да се дефинира класа Vozac во која се чуваат информации за:
  2.  
  3. име (низа од максимум 100 знаци)
  4. возраст (цел број)
  5. број на трки (цел број)
  6. дали е ветеран (да/не).
  7. Да се преоптоварат:
  8.  
  9. операторот << за печатење кој ќе ги печати името, возраст, бројот на трки и дали е ветеран (се печати VETERAN)
  10. операторот == за споредување на два возачи според заработувачката по трка.
  11. Од оваа класа да се изведат две нови класи Avtomobilist и Motociklist.
  12.  
  13. За автомобилистот дополнително се чува:
  14.  
  15. цена на автомобилот (децимален број).
  16. За мотоциклистот дополнително се чува:
  17.  
  18. моќност на мотор (цел број).
  19. Заработувачката по трка на возачите се пресметува како:
  20.  
  21. за автомобилостот заработувачката по трка е CENAAVTOMOBIL5
  22. за мотоциклистот заработувачката по трка е MOKJNOSTNAMOTOR∗20
  23. Секој автомобилист плаќа данок на заработка. Да се напишат соодветни методи за пресметување данок:
  24.  
  25. за автомобилисти: ако бројот на трки е поголем од 10 стапката на данок е 15% од заработката, инаку 10% од заработката.
  26. за мотоциклисти: ако е ветеран стапката на данок е 25% од заработката, инаку 20% од заработката.
  27. Да се напше надворешна функција soIstaZarabotuvachka која како аргументи прима низа од покажувачи од класата Vocac, нивниот број, како и покажувач кон ојбект од возач и враќа како резултат бројот на возачи кои имаат иста заработувачка по трка со проследениот возач.*/
  28.  
  29. #include <iostream>
  30. #include<cstring>
  31. using namespace std;
  32. class Vozac
  33. {
  34. protected:
  35.     char ime[100];
  36.     int vozrast;
  37.     int brTrki;
  38.     bool veteran;
  39. public:
  40.     Vozac(char ime[100]="",int vozrast=0,int brTrki=0, bool veteran=false)
  41.     {
  42.         strcpy(this->ime, ime);
  43.         this->vozrast=vozrast;
  44.         this->brTrki=brTrki;
  45.         this->veteran=veteran;
  46.     }
  47.     virtual float zarabotuvacka(){return 0;}
  48.     virtual float danok(){return 0;}
  49.  
  50.     friend ostream& operator << (ostream &o, const Vozac &v)
  51.     {
  52.         o<<v.ime<<endl;
  53.         o<<v.vozrast<<endl;
  54.         o<<v.brTrki<<endl;
  55.         if(v.veteran)
  56.             o<<"VETERAN"<<endl;
  57.         return o;
  58.     }
  59. bool operator==(Vozac &v2)
  60. {
  61.     return ( this->zarabotuvacka()== v2.zarabotuvacka());
  62.  
  63. }
  64. };
  65.  
  66. class Avtomobilist: public Vozac
  67. {
  68. private:
  69.     float cena;
  70. public:
  71.     Avtomobilist(char ime[100]="",int vozrast=0,int brTrki=0, bool veteran=false,float cena=0.0):Vozac(ime,vozrast,brTrki,veteran)
  72.     {
  73.         this->cena=cena;
  74.     }
  75.     float zarabotuvacka()
  76.     {
  77.         return cena/5.0;
  78.     }
  79.     float danok()
  80.     {
  81.         if(brTrki > 10)
  82.             return zarabotuvacka()*0.15;
  83.             return zarabotuvacka()*0.1;
  84.     }
  85. };
  86. class Motociklist: public Vozac
  87. {
  88. private:
  89.     int mokjnost;
  90. public:
  91.     Motociklist(char ime[100]="",int vozrast=0,int brTrki=0, bool veteran=false, int mokjnost=0):Vozac(ime,vozrast,brTrki,veteran)
  92.     {
  93.         this->mokjnost=mokjnost;
  94.     }
  95.     float zarabotuvacka()
  96.     {
  97.         return mokjnost*20;
  98.     }
  99.     float danok()
  100.     {
  101.         if(veteran)
  102.             return zarabotuvacka()*0.25;
  103.             return zarabotuvacka()*0.2;
  104.     }
  105. };
  106. int soIstaZarabotuvachka(Vozac **v, int n,Vozac *vx)
  107. {
  108.     int br=0;
  109.     for(int i=0;i<n;i++)
  110.     {
  111.         if(*v[i] == *vx)
  112.             br++;
  113.     }
  114.     return br;
  115. }
  116. int main()
  117. {
  118.     int n, x;
  119.     cin >> n >> x;
  120.     Vozac **v = new Vozac*[n];
  121.     char ime[100];
  122.     int vozrast;
  123.     int trki;
  124.     bool vet;
  125.     for(int i = 0; i < n; ++i) {
  126.         cin >> ime >> vozrast >> trki >> vet;
  127.         if(i < x) {
  128.             float cena_avto;
  129.             cin >> cena_avto;
  130.             v[i] = new Avtomobilist(ime, vozrast, trki, vet, cena_avto);
  131.         } else {
  132.             int mokjnost;
  133.             cin >> mokjnost;
  134.             v[i] = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  135.         }
  136.     }
  137.     cout << "=== DANOK ===" << endl;
  138.     for(int i = 0; i < n; ++i) {
  139.         cout << *v[i];
  140.         cout << v[i]->danok() << endl;
  141.     }
  142.     cin >> ime >> vozrast >> trki >> vet;
  143.     int mokjnost;
  144.     cin >> mokjnost;
  145.     Vozac *vx = new Motociklist(ime, vozrast, trki, vet, mokjnost);
  146.     cout << "=== VOZAC X ===" << endl;
  147.     cout << *vx;
  148.     cout << "=== SO ISTA ZARABOTUVACKA KAKO VOZAC X ===" << endl;
  149.     cout << soIstaZarabotuvachka(v, n, vx);
  150.     for(int i = 0; i < n; ++i) {
  151.         delete v[i];
  152.     }
  153.     delete [] v;
  154.     delete vx;
  155.     return 0;
  156. }
Advertisement
Add Comment
Please, Sign In to add comment