ivana_andreevska

Zadaca 2

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