Advertisement
Bore99

( C++) Транспорт

May 21st, 2019
638
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.29 KB | None | 0 0
  1. /*
  2. Туристичка агенција нуди различни понуди за транспорт на патници. За секоја понуда се чуваат податоци за дестинацијата (низа од знаци), основна цена (цел број) и податок за растојанието до дестинацијата изразено во km (цел број).
  3.  
  4. Од класата Transport да се изведат класите AvtomobilTransport и KombeTransport за моделирање на понудите за транспорт кои нудат транспорт со автомобил или комбе, соодветно. За секоја понуда за транспорт со автомобил се чува податок за тоа дали во понудата има платен шофер (булова променлива), а за транспорт со комбе бројот на луѓе кои може да се превезат во комбето (цел број). (5 поени)
  5.  
  6. За секој објект од двете изведени класи треба да бидат на располагање следниве методи:
  7.  
  8. конструктор со аргументи што одговараат на податочните членови и set и get методи за податочните членови (5 поени)
  9. метод cenaTransport, за пресметување на цената на понудата на следниот начин:
  10. За транспорт со автомобил - основната цена се зголемува за 20% ако има платен шофер
  11. За транспорт со комбе - основната цена ќе се намали зависно од бројот на патници во комбето. За секој патник во комбето цената се намалува за 200 (10 поени)
  12. преоптоварен оператор < за споредба на две понуди за транспорт на патник според растојанието до дестинацијата. (5 поени)
  13. Да се имплементира функција pecatiPoloshiPonudi што на влез прима низа од понуди за транспорт на патник, бројот на елементите од низата и една понуда T. Функцијата ја печати дестинацијата, растојанието до дестинацијата и цената за понудите од низата кои се поскапи од понудата T сортирани во растечки редослед по растојанието до дестинацијата (погледни го повикот на функцијата) (10 поени)
  14.  
  15. Комплетна функционалност на кодот (5 поени)
  16. */
  17.  
  18. #include <iostream>
  19. #include <cstring>
  20.  
  21. using namespace std;
  22.  
  23. class Transport
  24. {
  25. protected:
  26.     char destinacija[100];
  27.     int cena;
  28.     int km;
  29. public:
  30.     Transport(){}
  31.     Transport(char *destinacija, int cena, int km)
  32.     {
  33.         strcpy(this->destinacija,destinacija);
  34.         this->cena=cena;
  35.         this->km=km;
  36.     }
  37.  
  38.     virtual int getKm()=0;
  39.     virtual char *getDestinacija()=0;
  40.     virtual int cenaTransport()=0;
  41.     virtual int getCena()=0;
  42.  
  43.     bool operator<(Transport &a)
  44.     {
  45.         return this->getKm() < a.getKm();
  46.     }
  47.  
  48.     ~Transport(){}
  49. };
  50.  
  51. class AvtomobilTransport:public Transport
  52. {
  53. private:
  54.     bool sofer;
  55. public:
  56.     AvtomobilTransport(char *d, int c, int km, int s):Transport(d,c,km)
  57.     {
  58.         strcpy(destinacija,d);
  59.         cena=c;
  60.         this->km=km;
  61.         sofer=s;
  62.     }
  63.  
  64.     AvtomobilTransport(AvtomobilTransport &a)
  65.     {
  66.         strcpy(destinacija,a.destinacija);
  67.         cena=a.cena;
  68.         this->km=a.km;
  69.         sofer=a.sofer;
  70.     }
  71.  
  72.     int cenaTransport()
  73.     {
  74.         if(sofer==true)
  75.         {
  76.             return cena*1.2;
  77.         }
  78.         return cena;
  79.     }
  80.  
  81.     int getCena(){ return cena; }
  82.     int getKm(){ return km; }
  83.     char *getDestinacija(){ return destinacija; }
  84.  
  85.     ~AvtomobilTransport(){}
  86. };
  87.  
  88. class KombeTransport:public Transport
  89. {
  90. private:
  91.     int lugje;
  92. public:
  93.     KombeTransport(char *d, int c, int km, int k):Transport(d,c,km)
  94.     {
  95.         strcpy(destinacija,d);
  96.         cena=c;
  97.         this->km=km;
  98.         lugje=k;
  99.     }
  100.  
  101.     KombeTransport(KombeTransport &a)
  102.     {
  103.         strcpy(destinacija,a.destinacija);
  104.         cena=a.cena;
  105.         this->km=a.km;
  106.         lugje=a.lugje;
  107.     }
  108.  
  109.     int cenaTransport()
  110.     {
  111.         return cena-200*lugje;
  112.     }
  113.  
  114.     int getCena(){ return cena; }
  115.     int getKm(){ return km; }
  116.     char *getDestinacija(){ return destinacija; }
  117.  
  118.     ~KombeTransport(){}
  119. };
  120.  
  121. void pecatiPoloshiPonudi(Transport **ponudi, int n, Transport &t)
  122. {
  123.     Transport *tmp[n];
  124.     int k=0,i,j;
  125.     for(i=0;i<n;i++)
  126.     {
  127.         if( t.cenaTransport() < ponudi[i]->cenaTransport() )
  128.         {
  129.             tmp[k]=ponudi[i];
  130.             k++;
  131.         }
  132.     }
  133.     Transport *pom;
  134.     for(i=0;i<k-1;i++)
  135.     {
  136.         for(j=1;j<k;j++)
  137.         {
  138.             if(tmp[i]->getKm() > tmp[j]->getKm())
  139.             {
  140.                 pom=tmp[i];
  141.                 tmp[i]=tmp[j];
  142.                 tmp[j]=pom;
  143.             }
  144.         }
  145.     }
  146.  
  147.     for(i=0;i<k;i++)
  148.     {
  149.         cout<< tmp[i]->getDestinacija() <<" "<< tmp[i]->getKm()<<" ";
  150.         cout<< tmp[i]->cenaTransport() <<endl;
  151.     }
  152. }
  153.  
  154. int main()
  155. {
  156.     char destinacija[20];
  157.     int tip,cena,rastojanie,lugje;
  158.     bool shofer;
  159.     int n;
  160.     cin>>n;
  161.     Transport  **ponudi;
  162.     ponudi=new Transport *[n];
  163.  
  164.     for (int i=0;i<n;i++){
  165.  
  166.         cin>>tip>>destinacija>>cena>>rastojanie;
  167.         if (tip==1) {
  168.             cin>>shofer;
  169.             ponudi[i]=new AvtomobilTransport(destinacija,cena,rastojanie,shofer);
  170.  
  171.         }
  172.         else {
  173.             cin>>lugje;
  174.             ponudi[i]=new KombeTransport(destinacija,cena,rastojanie,lugje);
  175.         }
  176.  
  177.  
  178.     }
  179.  
  180.     AvtomobilTransport nov("Ohrid",2000,600,false);
  181.     pecatiPoloshiPonudi(ponudi,n,nov);
  182.  
  183.     for (int i=0;i<n;i++) delete ponudi[i];
  184.     delete [] ponudi;
  185.     return 0;
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement