Advertisement
frusso1337

Vozilo C++ LAB 7

Apr 16th, 2018
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.50 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. //вашиот код треба да биде тука
  5. class Vozilo{
  6.     protected:
  7.     float masa;
  8.     int sirina,visina;
  9.     public:
  10.     Vozilo(){
  11.     }
  12.     Vozilo(float m,int s,int v):masa(m),sirina(s),visina(v){}
  13.     virtual float getMasa()
  14.     {
  15.         return masa;
  16.     }
  17.     int getS()
  18.     {
  19.         return sirina;
  20.     }
  21.     int getV()
  22.     {
  23.         return visina;
  24.     }
  25.     virtual int vratiDnevnaCena()=0;
  26. };
  27. class Avtomobil:public Vozilo{
  28.     protected:
  29.     int brvrati;
  30.     public:
  31.     Avtomobil(float m,int s,int v,int brv):Vozilo(m,s,v),brvrati(brv){}
  32.     int getVrati()
  33.     {
  34.     return brvrati;
  35.     }
  36.     virtual int vratiDnevnaCena()
  37.     {
  38.         if(brvrati<5)
  39.             return 100;
  40.         else
  41.             return 130;
  42.     }
  43. };
  44. class Avtobus:public Vozilo{
  45.     protected:
  46.     int brpatnici;
  47.     public:
  48.     Avtobus(float m,int s,int v,int brp):Vozilo(m,s,v),brpatnici(brp){}
  49.     int getBrp()
  50.     {
  51.     return brpatnici;
  52.     }
  53.     virtual int vratiDnevnaCena()
  54.     {
  55.         return 5*brpatnici;
  56.     }
  57.    
  58. };
  59. class Kamion:public Vozilo{
  60.     protected:
  61.     float maksm;
  62.     public:
  63.     Kamion(float m,int s,int v,float m1):Vozilo(m,s,v),maksm(m1){}
  64.    float getM()
  65.    {
  66.        return maksm;
  67.    }
  68.     virtual int vratiDnevnaCena()
  69.     {
  70.         return 0.02*(this->maksm+this->getMasa());
  71.     }
  72. };
  73. class ParkingPlac{
  74. private:
  75. Vozilo **v;
  76.     int n;
  77.    
  78. public:
  79.    ParkingPlac() { v=new Vozilo*[100]; n=0; }
  80.     ParkingPlac(const ParkingPlac &r)
  81.     {
  82.         for(int i=0;i<n;i++)
  83.             delete v[i];
  84.         n=r.n;
  85.         v=new Vozilo*[n];
  86.         for(int i=0; i<n; i++)
  87.         {
  88.             v[i]=r.v[i];
  89.         }
  90.    
  91.     }
  92.    ~ParkingPlac()
  93.     {
  94.         for(int i=0;i<n;i++)
  95.             delete v[i];
  96.         delete []v;    
  97.     }
  98.     ParkingPlac &operator+=(Vozilo *vozilo)
  99.     {
  100.        
  101.          v[n++]=vozilo;
  102.        //  cout<<"ulaza tuj"<<endl;
  103.         return *this;
  104.        
  105.     }
  106.     float presmetajVkupnaMasa()
  107.     {
  108.        float r=0;
  109.         for(int i=0;i<n;i++)
  110.             r+=v[i]->getMasa();
  111.         return r;
  112.     }
  113.     int brojVozilaPoshirokiOd(int l)
  114.     {
  115.         int q=0;
  116.         for(int i=0;i<n;i++)
  117.         {
  118.             if(v[i]->getS()>=l)
  119.                 q++;
  120.         }
  121.         return q;
  122.     }
  123.     void pecati()
  124.     {
  125.        // cout<<"stignala"<<endl;
  126.       int brAvtomobili=0;
  127.             int brAvtobusi=0;
  128.             int brKamioni=0;
  129.  
  130.             for(int i=0; i<n; i++)
  131.             {
  132.                 Avtomobil *a=dynamic_cast<Avtomobil*>(v[i]);
  133.                 if(a!=0)
  134.                     brAvtomobili++;
  135.                 Avtobus *b=dynamic_cast<Avtobus*>(v[i]);
  136.                 if(b!=0)
  137.                     brAvtobusi++;
  138.                 Kamion *k=dynamic_cast<Kamion*>(v[i]);
  139.                 if(k!=0)
  140.                     brKamioni++;
  141.  
  142.  
  143.             }
  144.             cout << "Brojot na avtomobili e "<<brAvtomobili<<", brojot na avtobusi e "
  145.         <<brAvtobusi<<" i brojot na kamioni e "<<brKamioni<<"."<<endl;
  146.         }
  147.     int pogolemaNosivostOd(Vozilo &voz)
  148.     {
  149.         int br=0;
  150.         for(int i=0;i<n;i++)
  151.         {
  152.             Kamion *k;
  153.             k=dynamic_cast<Kamion *>(v[i]);
  154.             if(k!=0)
  155.             {
  156.                 if(k->getM()>voz.getMasa())
  157.                     br++;
  158.             }
  159.         }
  160.         return br;
  161.     }
  162.     int vratiDnevnaZarabotka() {
  163.     int rez=0;
  164.         for(int i=0;i<n;i++)
  165.             rez+=v[i]->vratiDnevnaCena();
  166.         return rez;
  167.     }
  168.    
  169. };
  170. int main(){
  171. ParkingPlac p;
  172.  
  173. int n;
  174. cin>>n;
  175. int shirina,visina, broj;
  176. float masa,nosivost;
  177. for (int i=0;i<n;i++){
  178.     int type;
  179.     cin>>type;
  180.     if(type==1){
  181.         cin>>masa>>shirina>>visina>>broj;
  182.         Avtomobil *a=new Avtomobil(masa,shirina,visina,broj);
  183.         p+=a;
  184.     }
  185.     if(type==2){
  186.         cin>>masa>>shirina>>visina>>broj;
  187.         p+=new Avtobus(masa,shirina,visina,broj);
  188.     }
  189.     if(type==3){
  190.         cin>>masa>>shirina>>visina>>nosivost;
  191.         p+=new Kamion(masa,shirina,visina,nosivost);
  192.     }
  193.    // cout<<"vrti main"<<endl;
  194. }
  195. //cout<<"DA"<<endl;
  196. p.pecati();
  197.  
  198. cout<<"\nZarabotkata e "<<p.vratiDnevnaZarabotka()<<endl;
  199. cout<<"Vkupnata masa e "<<p.presmetajVkupnaMasa()<<endl;
  200. cout<<"Brojot poshiroki od 5 e "<<p.brojVozilaPoshirokiOd(5)<<endl;
  201. Avtomobil a(1200,4,3,5);
  202. cout<<"Brojot na kamioni so nosivost pogolema od avtomobilot e "<<p.pogolemaNosivostOd(a)<<endl;
  203.  
  204. return 0;
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement