SlavkovB

Транспорт OOP Exercises

Jun 9th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.95 KB | None | 0 0
  1. Транспорт Problem 1 (0 / 0)
  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. Program output
  18. Sample input
  19. 2
  20. 1 Belgrad 3200 900 1
  21. 1 Bitola 1500 400 0
  22.  
  23. Sample output
  24. Belgrad 900 3840
  25.  
  26. //CODE//
  27.  
  28.  
  29. #include<iostream>
  30. #include<cstring>
  31. using namespace std;
  32.  
  33. class Transport{
  34.     char destinacija[20];
  35.     int cena;
  36.     int rastojanie;
  37. public:
  38.     Transport(const char *destinacija = " ", int cena = 0, int rastojanie = 0){
  39.     strcpy(this -> destinacija, destinacija);
  40.     this -> cena = cena;
  41.     this -> rastojanie = rastojanie;
  42.     }
  43.    
  44.     void setDestinacija(char *destinacija){strcpy(this -> destinacija, destinacija);}
  45.     void setCena(int cena){this -> cena = cena;}
  46.     void setRastojanie(int rastojanie){this -> rastojanie = rastojanie;}
  47.    
  48.     char *getDestinacija(){return this -> destinacija;}
  49.     int  getCena(){return this -> cena;}
  50.     int  getRastojanie(){return this -> rastojanie;}
  51.    
  52.     virtual float cenaTransport()  = 0;
  53.    
  54.     bool operator<(const Transport &t){
  55.     return this -> rastojanie < t.rastojanie;}
  56. };
  57.  
  58. class AvtomobilTransport : public Transport{
  59.     bool sofer;
  60. public:
  61.     AvtomobilTransport(const char *destinacija = " ", int cena = 0, int rastojanie = 0, bool sofer = false) :
  62.     Transport(destinacija, cena, rastojanie){
  63.     this -> sofer = sofer;}
  64.     float cenaTransport(){
  65.         if(this -> sofer)
  66.         return getCena() + (getCena() *  0.2);
  67.             else
  68.                 return getCena();
  69.     }
  70. };
  71. class KombeTransport : public Transport{
  72.  
  73. int brpatnici;
  74. public:
  75.     KombeTransport(const char *destinacija = " ", int cena = 0, int rastojanie = 0, int brpatnici = 0) :
  76.     Transport(destinacija, cena, rastojanie){
  77.     this -> brpatnici = brpatnici;}
  78.    
  79.     virtual float cenaTransport()
  80.     {
  81.     return getCena() - (this -> brpatnici * 200);
  82.     }
  83. };
  84. void pecatiPoloshiPonudi(Transport **ponudi, int n, Transport &t){
  85.  
  86.     Transport *tmp;
  87.     for(int i = 0; i < n; i++){
  88.         for(int j = i + 1; j < n; j++){
  89.        if(ponudi[i] -> cenaTransport() > ponudi[j] -> cenaTransport())
  90.        {
  91.            tmp = ponudi[i];
  92.        ponudi[i] = ponudi[j];
  93.        ponudi[j] = tmp;
  94.        }
  95.         }
  96.     }
  97.     for(int i = 0; i < n; i++){
  98.            if(ponudi[i]->cenaTransport()>t.cenaTransport())
  99.         {
  100.             cout<<ponudi[i]->getDestinacija()<<" ";
  101.             cout<<ponudi[i]->getRastojanie()<<" ";
  102.             cout<<ponudi[i]->cenaTransport()<<endl;
  103.     }
  104.     }
  105. }
  106.  
  107. int main(){
  108.  
  109. char destinacija[20];
  110. int tip,cena,rastojanie,lugje;
  111. bool shofer;
  112. int n;
  113. cin>>n;
  114. Transport  **ponudi;
  115. ponudi=new Transport *[n];
  116.  
  117. for (int i=0;i<n;i++){
  118.  
  119.     cin>>tip>>destinacija>>cena>>rastojanie;
  120.     if (tip==1) {
  121.         cin>>shofer;
  122.         ponudi[i]=new AvtomobilTransport(destinacija,cena,rastojanie,shofer);
  123.  
  124.     }
  125.     else {
  126.         cin>>lugje;
  127.         ponudi[i]=new KombeTransport(destinacija,cena,rastojanie,lugje);
  128.     }
  129.  
  130.  
  131. }
  132.  
  133. AvtomobilTransport nov("Ohrid",2000,600,false);
  134. pecatiPoloshiPonudi(ponudi,n,nov);
  135.  
  136. for (int i=0;i<n;i++) delete ponudi[i];
  137. delete [] ponudi;
  138. return 0;
  139. }
Add Comment
Please, Sign In to add comment