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()
- {
- }
- Vozilo(float m,int s, int v)
- {
- masa=m;
- sirina=s;
- visina=v;
- }
- virtual int vratiDnevnaCena()=0;
- float getMasa()
- {
- return masa;
- }
- int getSirina()
- {
- return sirina;
- }
- int getVisina()
- {
- return visina;
- }
- };
- class Avtomobil:public Vozilo
- {
- private:
- int br_vrati;
- public:
- Avtomobil()
- {
- }
- Avtomobil(float m,int s,int v,int br):Vozilo(m,s,v)
- {
- br_vrati=br;
- }
- int vratiDnevnaCena()
- {
- if(br_vrati<5)
- return 100;
- else return 130;
- }
- };
- class Avtobus:public Vozilo
- {
- private:
- int br_patnici;
- public:
- Avtobus()
- {
- }
- Avtobus(float m,int s,int v,int br):Vozilo(m,s,v)
- {
- br_patnici=br;
- }
- int vratiDnevnaCena()
- {
- return br_patnici*5;
- }
- };
- class Kamion:public Vozilo
- {
- private:
- float max_masa;
- public:
- Kamion()
- {
- }
- Kamion(float m,int s,int v, float br):Vozilo(m,s,v)
- {
- max_masa=br;
- }
- int vratiDnevnaCena()
- {
- return (masa+max_masa)*0.02;
- }
- float getMaxMasa()
- {
- return max_masa;
- }
- };
- class ParkingPlac
- {
- private:
- Vozilo **pole;
- int br_elementi;
- public:
- ParkingPlac()
- {
- pole=new Vozilo*[30];
- br_elementi=0;
- }
- ParkingPlac(Vozilo **p,int br)
- {
- pole=p;
- br_elementi=br;
- }
- ~ParkingPlac()
- {
- delete [] pole;
- }
- ParkingPlac &operator+=(Vozilo * v)
- {
- pole[br_elementi]=v;
- br_elementi++;
- }
- float presmetajVkupnaMasa()
- {
- float masa=0;
- for(int i=0;i<br_elementi;i++)
- masa+=pole[i]->getMasa();
- return masa;
- }
- int brojVozilaPoshirokiOd(int l)
- {
- int br_voz=0;
- for(int i=0;i<br_elementi;i++)
- {
- if(pole[i]->getSirina()>l)
- br_voz++;
- }
- return br_voz;
- }
- void pecati()
- {
- int br_avtomobili=0;
- int br_avtobusi=0;
- int br_kamioni=0;
- for(int i=0;i<br_elementi;i++)
- {
- Avtomobil *a=dynamic_cast<Avtomobil*>(pole[i]);
- if(a!=0)
- {
- br_avtomobili++;
- }
- Kamion *k=dynamic_cast<Kamion*>(pole[i]);
- if(k!=0)
- {
- br_kamioni++;
- }
- Avtobus *av=dynamic_cast<Avtobus*>(pole[i]);
- if(av!=0)
- {
- br_avtobusi++;
- }
- }
- cout<<"Broot na avtomobili e "<<br_avtomobili<<", brojot na avtobusi e "<<br_avtobusi<<" i brojot na kamioni e "<<br_kamioni<<"."<<endl;
- }
- int pogolemaNosivostOd(Vozilo &v)
- {
- int br_kamioni=0;
- for(int i=0;i<br_elementi;i++)
- {
- Kamion *k=dynamic_cast<Kamion*>(pole[i]);
- if(k!=0)
- {
- if(k->getMaxMasa()>v.getMasa())
- br_kamioni++;
- }
- }
- return br_kamioni;
- }
- int vratiDnevnaZarabotka()
- {
- int sum=0;
- for(int i=0;i<br_elementi;i++)
- {
- sum+=pole[i]->vratiDnevnaCena();
- }
- return sum;
- }
- };
- int main(){
- ParkingPlac p;
- int n;
- cin>>n;
- int shirina,visina, broj;
- float masa,nosivost;
- for (int i=0;i<n;i++){
- int type;
- cin>>type;
- if(type==1){
- cin>>masa>>shirina>>visina>>broj;
- Avtomobil *a=new Avtomobil(masa,shirina,visina,broj);
- p+=a;
- }
- if(type==2){
- cin>>masa>>shirina>>visina>>broj;
- p+=new Avtobus(masa,shirina,visina,broj);
- }
- if(type==3){
- cin>>masa>>shirina>>visina>>nosivost;
- p+=new Kamion(masa,shirina,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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement