Koki99

Возило

Jun 23rd, 2021
694
331 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. Да се дефинира класа Vozilo која ќе содржи информација за неговата маса (децимален број), ширина и висина (цели броеви).
  3.  
  4. Од оваа класа да се изведе класата Автомобил во која како дополнителна информација се чува информацијата за бројот на врати (цел број).
  5.  
  6. Од класата возило да се изведе и класата Автобус во која се чуваат информации и за бројот на патници кои може да ги пренесува.
  7.  
  8. Од класата возило да се изведе класата Камион во која се чуваат информации и за максималната маса која може да се товари на него (децимална вредност).
  9.  
  10. За сите класи да се креираат погодни контруктори, како и set и get функции.
  11.  
  12. Да се дефинира класа ParkingPlac за која се чува динамичко алоцирано поле од покажувачи кон Vozilo, како и бројот на елементи во полето. Во оваа класа да се дефинираат:
  13.  
  14. конструктор
  15. деструктор
  16. операторот += за додавање на ново возило (аргументот е покажувач кон Vozilo)
  17. функција float presmetajVkupnaMasa() со која се пресметува вкупната маса на сите возила во паркинг плацот
  18. функција int brojVozilaPoshirokiOd(int l) со која се пресметува бројот на возила кои се пошироки од дадената вредност
  19. функција void pecati() со која се печати: Brojot na avtomobili e X, brojot na avtobusi e Y i brojot na kamioni e Z.
  20. функција int pogolemaNosivostOd(Vozilo& v) во која се враќа бројот на сите камиони кои имаат носивост поголема од масата на возилото предадено како аргумент.
  21. Да се дефинира виртуелна функција int vratiDnevnaCena() во класата Vozilo и истата да се преоптовари во сите изведени класи. За секој автомобил со помалку од 5 врати дневната цена е 100, а инаку е 130 денари. За секој камион цената се пресметува со формулата: (masa+nosivost)*0.02. За секој автобус цената е 5 денари по лице кое може да се пренесува.
  22.  
  23. Во класата ParkingPlac да се додаде следната функција: - функција int vratiDnevnaZarabotka() со која се враќа дневната заработка од сите возила на паркингот.
  24. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  25.  
  26. #include <iostream>
  27. using namespace std;
  28.  
  29. class Vozilo
  30. {
  31. protected:
  32.     float masa;
  33.     int shirina;
  34.     int visina;
  35.  
  36. public:
  37.     Vozilo(float masa=0.0,int shirina=0,int visina=0)
  38.     {
  39.         this->masa=masa;
  40.         this->shirina=shirina;
  41.         this->visina=visina;
  42.     }
  43.     float getMasa() { return this->masa; }
  44.     int getShirina() { return this->shirina; }
  45.     int getVisina() { return this->visina; }
  46.  
  47.     void setMasa(float m) { this->masa=m; }
  48.     void setShirina(int s) { this->shirina=s; }
  49.     void setVisina(int v) { this->visina=v ;}
  50.  
  51.     virtual int vratiDnevnaCena()=0;
  52.  
  53.  
  54. };
  55. class Avtomobil : public Vozilo
  56. {
  57. protected:
  58.     int br_vrati;
  59.  
  60. public:
  61.     Avtomobil(float masa=0.0,int shirina=0,int visina=0,int br_vrati=0):Vozilo(masa,shirina,visina)
  62.     {
  63.         this->br_vrati=br_vrati;
  64.     }
  65.  
  66.     int vratiDnevnaCena()
  67.     {
  68.         if(this->br_vrati<5) return 100;
  69.  
  70.         return 130;
  71.     }
  72.  
  73. };
  74.  
  75. class Avtobus : public Vozilo
  76. {
  77. protected:
  78.     int br_patnici;
  79.  
  80. public:
  81.     Avtobus(float masa=0.0,int shirina=0,int visina=0,int br_patnici=0):Vozilo(masa,shirina,visina)
  82.     {
  83.         this->br_patnici=br_patnici;
  84.     }
  85.  
  86.     int vratiDnevnaCena()
  87.     {
  88.         return this->br_patnici*5;
  89.     }
  90.     int getBr_patnici()
  91.     {
  92.         return this->br_patnici;
  93.     }
  94. };
  95.  
  96. class Kamion : public Vozilo
  97. {
  98. protected:
  99.     float max_masa;
  100.  
  101. public:
  102.     Kamion(float masa=0.0,int shirina=0,int visina=0,float max_masa=0.0):Vozilo(masa,shirina,visina)
  103.     {
  104.         this->max_masa=max_masa;
  105.     }
  106.  
  107.     int vratiDnevnaCena()
  108.     {
  109.         return (masa+max_masa)*0.02;
  110.     }
  111.  
  112.     float getMax_masa() { return this->max_masa; }
  113.  
  114. };
  115.  
  116. class ParkingPlac
  117. {
  118. private:
  119.     Vozilo **vozila;
  120.     int n;
  121.  
  122. public:
  123.     ParkingPlac(Vozilo **vozilaa,int n)
  124.     {
  125.         this->n=n;
  126.         this->vozila=new Vozilo*[n];
  127.         for(int i=0;i<n;i++)
  128.         {
  129.             vozila[i]=vozilaa[i];
  130.         }
  131.     }
  132.  
  133.     ParkingPlac()
  134.     {
  135.         vozila=new Vozilo*[100];
  136.         n=0;
  137.     }
  138.  
  139.     ~ParkingPlac()
  140.     {
  141.         for(int i=0;i<n;i++)
  142.         {
  143.             delete vozila[i];
  144.         }
  145.         delete [] vozila;
  146.     }
  147.  
  148.     ParkingPlac &operator+=(Vozilo *v1)
  149.     {
  150.         vozila[n++]=v1;
  151.  
  152.         return *this;
  153.     }
  154.  
  155.     float presmetajVkupnaMasa()
  156.     {
  157.         float suma=0;
  158.         for(int i=0;i<n;i++)
  159.         {
  160.             suma+=vozila[i]->getMasa();
  161.         }
  162.         return suma;
  163.     }
  164.  
  165.     int brojVozilaPoshirokiOd(int l)
  166.     {
  167.         int brojac=0;
  168.         for(int i=0;i<n;i++)
  169.         {
  170.             if(vozila[i]->getShirina() > l)
  171.                 brojac++;
  172.         }
  173.         return brojac;
  174.     }
  175.  
  176.     int pogolemaNosivostOd(Vozilo& v)
  177.     {
  178.         int brojac=0;
  179.         for(int i=0;i<n;i++)
  180.         {
  181.             Kamion *k=dynamic_cast<Kamion*>(vozila[i]);
  182.             if(k!=0)
  183.             {
  184.                 if(v.getMasa()<vozila[i]->getMasa())
  185.                     brojac++;
  186.             }
  187.         }
  188.         return brojac;
  189.     }
  190.  
  191.     void pecati()
  192.     {
  193.         int avtomobili=0,avtobusi=0,kamioni=0;
  194.  
  195.         for(int i=0;i<n;i++)
  196.         {
  197.             Avtomobil *a=dynamic_cast<Avtomobil*>(vozila[i]);
  198.             if(a!=0) avtomobili++;
  199.  
  200.             Avtobus *s=dynamic_cast<Avtobus*>(vozila[i]);
  201.             if(s!=0) avtobusi++;
  202.  
  203.             Kamion *k=dynamic_cast<Kamion*>(vozila[i]);
  204.             if(k!=0) kamioni++;
  205.         }
  206.         cout << "Brojot na avtomobili e "<<avtomobili<<", brojot na avtobusi e "
  207.         <<avtobusi<<" i brojot na kamioni e "<<kamioni<<"."<<endl;
  208.  
  209.     }
  210.     int vratiDnevnaZarabotka()
  211.     {
  212.         int zarabotka=0;
  213.         for(int i=0;i<n;i++)
  214.         {
  215.             zarabotka+=vozila[i]->vratiDnevnaCena();
  216.         }
  217.  
  218.         return zarabotka;
  219.     }
  220.  
  221. };
  222.  
  223. int main(){
  224.     ParkingPlac p;
  225.  
  226.     int n;
  227.     cin>>n;
  228.     int shirina,visina, broj;
  229.     float masa,nosivost;
  230.     for (int i=0;i<n;i++){
  231.         int type;
  232.         cin>>type;
  233.         if(type==1){
  234.             cin>>masa>>shirina>>visina>>broj;
  235.             Avtomobil *a=new Avtomobil(masa,shirina,visina,broj);
  236.             p+=a;
  237.         }
  238.         if(type==2){
  239.             cin>>masa>>shirina>>visina>>broj;
  240.             p+=new Avtobus(masa,shirina,visina,broj);
  241.         }
  242.         if(type==3){
  243.             cin>>masa>>shirina>>visina>>nosivost;
  244.             p+=new Kamion(masa,shirina,visina,nosivost);
  245.         }
  246.     }
  247.     p.pecati();
  248.  
  249.     cout<<"\nZarabotkata e "<<p.vratiDnevnaZarabotka()<<endl;
  250.     cout<<"Vkupnata masa e "<<p.presmetajVkupnaMasa()<<endl;
  251.     cout<<"Brojot poshiroki od 5 e "<<p.brojVozilaPoshirokiOd(5)<<endl;
  252.     Avtomobil a(1200,4,3,5);
  253.     cout<<"Brojot na kamioni so nosivost pogolema od avtomobilot e "<<p.pogolemaNosivostOd(a)<<endl;
  254.     return 0;
  255. }
RAW Paste Data