Advertisement
LegoDrifter

Untitled

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