sandra0309

vozilo

May 10th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.72 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. class Vozilo
  5. {
  6. protected:
  7.     float masa;
  8.     int sirina;
  9.     int visina;
  10. public:
  11.     Vozilo(float masa=0.0,int sirina=0,int visina=0)
  12.     {
  13.         this->masa=masa;
  14.         this->sirina=sirina;
  15.         this->visina=visina;
  16.  
  17.     }
  18.     virtual float vrati_dnevna_cena ()=0;
  19.     float getMasa()
  20.     {
  21.         return masa;
  22.     }
  23.     void setMasa(float masa)
  24.     {
  25.         this->masa=masa;
  26.     }
  27.     int getSirina()
  28.     {
  29.         return sirina;
  30.     }
  31.     void setSirina(int sirina)
  32.     {
  33.         this->sirina=sirina;
  34.     }
  35.     int getVisina()
  36.     {
  37.         return visina;
  38.     }
  39.     void setVisina(int visina)
  40.     {
  41.         this->visina=visina;
  42.     }
  43.  
  44.  
  45.  
  46. };
  47. class Avtomobil : public Vozilo
  48. {
  49. private:
  50.     int br_vrati;
  51. public:
  52.     Avtomobil(float masa,int sirina,int visina,int br_vrati=0): Vozilo(masa,sirina,visina)
  53.     {
  54.         this->br_vrati=br_vrati;
  55.     }
  56.     float vrati_dnevna_cena()
  57.     {
  58.         if(br_vrati>5)
  59.             return 100;
  60.         else
  61.             return 130;
  62.     }
  63.     int getBrVrati()
  64.     {
  65.         return br_vrati;
  66.     }
  67.     void setBrVrati(int br_vrati)
  68.     {
  69.         this->br_vrati=br_vrati;
  70.     }
  71.  
  72. };
  73. class Avtobus : public Vozilo
  74. {
  75. private:
  76.     int br_patnici;
  77. public:
  78.     Avtobus(float masa,int sirina,int visina,int br_patnici=0): Vozilo(masa,sirina,visina)
  79.     {
  80.         this->br_patnici=br_patnici;
  81.     }
  82.     float vrati_dnevna_cena ()
  83.     {
  84.         return br_patnici*5;
  85.     }
  86.  
  87.     int getBrPatnici()
  88.     {
  89.         return br_patnici;
  90.     }
  91.     void setBrPatnici(int br_patnici)
  92.     {
  93.         this->br_patnici=br_patnici;
  94.     }
  95. };
  96. class Kamion : public Vozilo
  97. {
  98. private:
  99.     float max_masa;
  100. public:
  101.     Kamion(float masa,int sirina,int visina,float max_masa=0)
  102.     {
  103.         this->max_masa=max_masa;
  104.     }
  105.     float vrati_dnevna_cena ()
  106.     {
  107.         return (masa*max_masa)*0.02;
  108.     }
  109.     int getMaxMasa()
  110.     {
  111.         return max_masa;
  112.     }
  113.     void setMaxMasa(float max_masa)
  114.     {
  115.         this->max_masa=max_masa;
  116.     }
  117. };
  118. class ParkingPlac
  119. {
  120. private:
  121.     Vozilo **v;
  122.     int n;
  123. public:
  124.     ParkingPlac(){v=NULL;
  125.     int n=0;}
  126.  
  127.     ~ParkingPlac () {}
  128.     ParkingPlac &operator +=(const Vozilo &vv)
  129.     {
  130.         Vozilo **tmp;
  131.         tmp=new Vozilo*[n+1];
  132.         for(int i=0;i<n;i++)
  133.         {
  134.             tmp[i]=v[i];
  135.         }
  136.         delete [] v;
  137.         tmp[n]=vv;
  138.         v=tmp;
  139.         tmp=NULL;
  140.         n++;
  141.         return *this;
  142.     }
  143.     float presmetajVkupnaMasa()
  144.     {
  145.         float brojac=0.0;
  146.         for(int i=0;i<n;i++)
  147.         {
  148.             brojac+=v[i]->getMasa();
  149.         }
  150.         return brojac;
  151.     }
  152.     int brojVozilaPoshirokiOd(int i)
  153.     { int maxi=0;
  154.        for(int j=0;j<n;j++)
  155.        {
  156.            if(v[j]->getSirina()>i)
  157.            {
  158.                maxi++;
  159.            }
  160.  
  161.        }
  162.        return maxi;
  163.  
  164.     }
  165.     void pecati()
  166.     {
  167.        int kola=0,av=0,kam=0;
  168.        for(int i=0;i<n;i++)
  169.        {
  170.            if(dynamic_cast<Avtomobil*>v[i])
  171.            {
  172.                kola++;
  173.            }
  174.            else if(dynamic_cast<Avtobus*>v[i])
  175.            {
  176.                av++;
  177.            }
  178.            else if(dynamic_cast<Kamion*>v[i])
  179.            {
  180.                kam++;
  181.            }
  182.        }
  183.        cout<<"Brojot na avtomobili e "<<kola<<", brojot na avtobusi e "<<av<<" i brojot na kamioni e "<<kam<<"."<<endl;
  184.     }
  185.     int pogolemaNosivostOd(Vozilo &v)
  186.     {
  187.         int brojac=0;
  188.         for(int i=0;i<n;i++)
  189.         {
  190.             if(v[i]->getMaxMasa>v.getMasa())
  191.             {
  192.                 brojac++;
  193.             }
  194.         }
  195.         return brojac;
  196.     }
  197.    int vratiDnevnaZarabotka()
  198.    {
  199.        int suma=0;
  200.        for(int i=0;i<n;i++)
  201.        {
  202.             suma+=v[i]->vrati_dnevna_cena();
  203.        }
  204.        return suma;
  205.  
  206.  
  207.    }
  208.  
  209. };
  210.  
  211.  
  212.  
  213.  
  214. int main(){
  215. ParkingPlac p;
  216.  
  217. int n;
  218. cin>>n;
  219. int shirina,visina, broj;
  220. float masa,nosivost;
  221. for (int i=0;i<n;i++){
  222.     int type;
  223.     cin>>type;
  224.     if(type==1){
  225.         cin>>masa>>shirina>>visina>>broj;
  226.         Avtomobil *a=new Avtomobil(masa,shirina,visina,broj);
  227.         p+=a;
  228.     }
  229.     if(type==2){
  230.         cin>>masa>>shirina>>visina>>broj;
  231.         p+=new Avtobus(masa,shirina,visina,broj);
  232.     }
  233.     if(type==3){
  234.         cin>>masa>>shirina>>visina>>nosivost;
  235.         p+=new Kamion(masa,shirina,visina,nosivost);
  236.     }
  237. }
  238.  
  239. p.pecati();
  240.  
  241. cout<<"\nZarabotkata e "<<p.vratiDnevnaZarabotka()<<endl;
  242. cout<<"Vkupnata masa e "<<p.presmetajVkupnaMasa()<<endl;
  243. cout<<"Brojot poshiroki od 5 e "<<p.brojVozilaPoshirokiOd(5)<<endl;
  244. Avtomobil a(1200,4,3,5);
  245. cout<<"Brojot na kamioni so nosivost pogolema od avtomobilot e "<<p.pogolemaNosivostOd(a)<<endl;
  246.  
  247.  
  248. }
Advertisement
Add Comment
Please, Sign In to add comment