Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Vozilo
- {
- protected:
- float masa;
- int sirina;
- int visina;
- public:
- Vozilo(float masa=0, int sirina=0, int visina=0)
- {
- this->masa=masa;
- this->sirina=sirina;
- this->visina=visina;
- }
- int getMasa()
- {
- return masa;
- }
- int getSirina()
- {
- return sirina;
- }
- virtual int vratiDnevnaCena();
- };
- class Avtomobil:public Vozilo
- {
- protected:
- int brVrati;
- public:
- Avtomobil(float masa=0, int sirina=0, int visina=0, int brVrati=0):Vozilo(masa, sirina, visina)
- {
- this->brVrati=brVrati;
- }
- int vratiDnevnaCena()
- {
- if(brVrati<5)
- return 100;
- return 130;
- }
- };
- class Avtobus:public Vozilo
- {
- protected:
- int brPatnici;
- public:
- Avtobus(float masa=0, int sirina=0, int visina=0,int brPatnici=0):Vozilo(masa, sirina, visina)
- {
- this->brPatnici=brPatnici;
- }
- int vratiDnevnaCena()
- {
- return 5*brPatnici;
- }
- };
- class Kamion:public Vozilo
- {
- protected:
- float maxMasa;
- public:
- Kamion(float masa=0, int sirina=0, int visina=0, float maxMasa=0):Vozilo(masa, sirina, visina)
- {
- this->maxMasa=maxMasa;
- }
- int vratiDnevnaCena()
- {
- return (masa+maxMasa)*0.02;
- }
- };
- class ParkingPlac
- {
- protected:
- Vozilo **voz;
- int n;
- public:
- ParkingPlac()
- {
- this->voz=NULL;
- this->n=0;
- }
- ~ParkingPlac()
- {
- for(int i=0; i<n; i++)
- {
- delete voz[i]; //се бришат покажувачите
- }
- delete[]voz; //се брише низата
- }
- ParkingPlac &operator +=(Vozilo *v)
- {
- if(n==0)
- {
- voz = new Vozilo *[1];
- voz[0] = v;
- n=1;
- }
- else
- {
- Vozilo **tmp = new Vozilo*[n];
- for(int i=0; i<n; i++)
- {
- tmp[i]=voz[i];
- }
- delete[]tmp;
- voz = new Vozilo*[n+1];
- for(int i=0; i<n; i++)
- {
- voz[i]=tmp[i];
- }
- delete[]tmp;
- voz[n]=v;
- n++;
- }
- return *this;
- }
- float presmetajVkupnaMasa()
- {
- int vkupno=0;
- for(int i=0; i<n; i++)
- {
- vkupno+=voz[i]->getMasa();
- }
- return vkupno;
- }
- int brojVozilaPoshirokiOd(int I)
- {
- int counter=0;
- for(int i=0; i<n; i++)
- {
- if(voz[i]->getSirina()>I)
- {
- counter++;
- }
- }
- return counter;
- }
- void pecati()
- {
- int av=0, kol=0, kam=0;
- for(int i=0; i<n; i++)
- {
- if(dynamic_cast<Avtomobil *>(voz[i]))
- kol++;
- if(dynamic_cast<Avtobus *>(voz[i]))
- av++;
- if(dynamic_cast<Kamion *>(voz[i]))
- kam++;
- }
- cout<<"Brojot na avtomobili e: "<<kol<<endl;
- cout<<"Brojot na avtobusi e: "<<av<<endl;
- cout<<"Brojot na kamioni e: "<<kam<<endl;
- }
- int pogolemaNosivostOd(Vozilo &v)
- {
- int kam=0;
- for(int i=0; i<n; i++)
- {
- if(dynamic_cast<Kamion *>(voz[i]))
- {
- if(this->voz[i]->getMasa()>v.getMasa())
- {
- kam++;
- }
- }
- }
- return kam;
- }
- int vratiDnevnaZarabotka()
- {
- int vkupno=0;
- for(int i=0; i<n; i++)
- {
- vkupno+=voz[i]->vratiDnevnaCena();
- }
- return vkupno;
- }
- };
- int main()
- {
- int n;
- ParkingPlac p;
- cin>>n;
- int sirina, visina, broj;
- float masa, nosivost;
- for(int i=0; i<n; i++)
- {
- int type;
- cin>>type;
- if(type==1)
- {
- cin>>masa>>sirina>>visina>>broj;
- Avtomobil *a = new Avtomobil(masa, sirina, visina, broj);
- p+=a;
- }
- if(type==2)
- {
- cin>>masa>>sirina>>visina>>broj;
- p+= new Avtobus(masa, sirina, visina, broj);
- }
- if(type==3)
- {
- cin>>masa>>sirina>>visina>>nosivost;
- p+=new Kamion(masa, sirina, visina, nosivost);
- }
- }
- p.pecati();
- cout<<"\nZarabotkata e "<<p.vratiDnevnaZarabotka()<<endl;
- cout<<"Vkupnata masa e "<<p.presmetajVkupnaMasa()<<endl;
- cout<<"Brojot poshiroki od 5 e "<<p.brojVozilaPoshirokiOd(5)<<endl;
- Avtomobil a(1200,4,3,5);
- cout<<"Brojot na kamioni so nosivost pogolema od avtomobilot e "<<p.pogolemaNosivostOd(a)<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement