Advertisement
brsjak

Transport (10/10)

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