LegoDrifter

OOP - Transport

Jun 26th, 2020
349
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.30 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Transport{
  7. protected:
  8.     char destination[100];
  9.     int price;
  10.     int distance;
  11. public:
  12.     Transport()
  13.     {
  14.         strcpy(this->destination,"");
  15.         this->price=0;
  16.         this->distance=0;
  17.     }
  18.     Transport(const char *destination,int price,int distance)
  19.     {
  20.         strcpy(this->destination,destination);
  21.         this->price=price;
  22.         this->distance=distance;
  23.     }
  24.     Transport(const Transport &t)
  25.     {
  26.         strcpy(this->destination,t.destination);
  27.         this->price=t.price;
  28.         this->distance=t.distance;
  29.     }
  30.     virtual int cenaTransport()=0;
  31.     int get_price()
  32.     {
  33.         return price;
  34.     }
  35.     int get_distance()
  36.     {
  37.         return distance;
  38.     }
  39.     char * get_destination()
  40.     {
  41.         return destination;
  42.     }
  43.     virtual ~Transport(){}
  44.  
  45. };
  46. class AvtomobilTransport:public Transport{
  47. private:
  48.     bool platenSofer;
  49. public:
  50.     AvtomobilTransport(const char *destination="",int price=0,int distance=0
  51.                        ,bool platenSofer=false):Transport(destination,price,distance)
  52.     {
  53.         this->platenSofer=platenSofer;
  54.     }
  55.     void setSofer(bool sofer)
  56.     {
  57.         platenSofer=sofer;
  58.     }
  59.     int cenaTransport()
  60.     {
  61.         if(platenSofer==true)
  62.         {
  63.             return this->price*1.2;
  64.         }
  65.         else return this->price;
  66.     }
  67.  
  68. };
  69. class KombeTransport:public Transport{
  70. private:
  71.     int people;
  72. public:
  73.     KombeTransport(const char *destination="",int price=0,int distance=0
  74.                    ,int people=0):Transport(destination,price,distance)
  75.     {
  76.         this->people=people;
  77.     }
  78.     void setPeople(int peps)
  79.     {
  80.         this->people=peps;
  81.     }
  82.     int cenaTransport()
  83.     {
  84.         if(people>0)
  85.         {
  86.             return this->price - (this->people*200);
  87.         }
  88.         else return this->price;
  89.        
  90.     }
  91.  
  92. };
  93. bool operator < (Transport *t,Transport &t1)
  94. {
  95.     if(t->get_distance()<t1.get_distance())
  96.         return true;
  97.     else return false;
  98. }
  99. void pecatiPoloshiPonudi(Transport **ponudi,int n,Transport &t)
  100. {
  101.     Transport *s;
  102.     for(int i=0;i<n;i++)
  103.     {
  104.         for(int j=0;j<n;j++)
  105.         {
  106.             if(ponudi[i]->cenaTransport()<ponudi[j]->cenaTransport())
  107.             {
  108.                 s=ponudi[i];
  109.                 ponudi[i]=ponudi[j];
  110.                 ponudi[j]=s;
  111.             }
  112.         }
  113.     }
  114.     for(int i=0;i<n;i++)
  115.     {
  116.         if(ponudi[i]->cenaTransport()>t.cenaTransport())
  117.         {
  118.             cout<<ponudi[i]->get_destination()<<" "<<ponudi[i]->get_distance()<<" "<<ponudi[i]->cenaTransport()<<endl;
  119.         }
  120.     }
  121. }
  122. int main(){
  123.  
  124. char destinacija[20];
  125. int tip,cena,rastojanie,lugje;
  126. bool shofer;
  127. int n;
  128. cin>>n;
  129. Transport  **ponudi;
  130. ponudi=new Transport *[n];
  131.  
  132. for (int i=0;i<n;i++){
  133.  
  134.     cin>>tip>>destinacija>>cena>>rastojanie;
  135.     if (tip==1) {
  136.         cin>>shofer;
  137.         ponudi[i]=new AvtomobilTransport(destinacija,cena,rastojanie,shofer);
  138.  
  139.     }
  140.     else {
  141.         cin>>lugje;
  142.         ponudi[i]=new KombeTransport(destinacija,cena,rastojanie,lugje);
  143.     }
  144.  
  145.  
  146. }
  147.  
  148. AvtomobilTransport nov("Ohrid",2000,600,false);
  149. pecatiPoloshiPonudi(ponudi,n,nov);
  150.  
  151. for (int i=0;i<n;i++) delete ponudi[i];
  152. delete [] ponudi;
  153. return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment