Advertisement
AnaGocevska

Untitled

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