Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- using namespace std;
- class Vozilo{
- private:
- float masa;
- int shirina,visina;
- public:
- Vozilo(const float masa=0,const int shirina=0,const int visina=0){
- this->masa=masa;
- this->shirina=shirina;
- this->visina=visina;
- }
- Vozilo(Vozilo &v){
- masa=v.masa;
- shirina=v.shirina;
- visina=v.visina;
- }
- void Setmasa(float masa){
- this->masa=masa;
- }
- void Setshirina(int shirina){
- this->shirina=shirina;
- }
- void Setvisina(int visina){
- this->visina=visina;
- }
- float Getmasa(){
- return masa;
- }
- int Getshirina(){
- return shirina;
- }
- int Getvisina(){
- return visina;
- }
- virtual int vratiDnevnaCena()=0;
- };
- class Avtomobil:public Vozilo {
- private:
- int brojVrati;
- public:
- Avtomobil(){}
- Avtomobil(float m,int s,int v,int brojVrati=0):Vozilo(m,s,v){
- this->brojVrati=brojVrati;
- }
- int GetbrojVrati(){
- return brojVrati;
- }
- int vratiDnevnaCena(){
- if(brojVrati<5){
- return 100;
- }
- return 130;
- }
- };
- class Avtobus:public Vozilo {
- private:
- int brPatnici;
- public:
- Avtobus(){}
- Avtobus(float m,int s,int v,int brPatnici=0):Vozilo(m,s,v){
- this->brPatnici=brPatnici;
- }
- int vratiDnevnaCena(){
- return brPatnici*5;
- }
- };
- class Kamion:public Vozilo {
- private:
- float maxMasa;
- public:
- Kamion(){}
- Kamion(float m,int s,int v,float maxMasa=0):Vozilo(m,s,v){
- this->maxMasa=maxMasa;
- }
- int vratiDnevnaCena(){
- return (Getmasa()+maxMasa)*0.02;
- }
- };
- class ParkingPlac{
- private:
- int brElementi;
- Vozilo **v;
- public:
- ParkingPlac(){
- v=new Vozilo*[100];
- brElementi=0;
- }
- ParkingPlac(Vozilo **v, int brElementi){
- this->brElementi=brElementi;
- v=new Vozilo*[brElementi];
- for(int i=0;i<brElementi;i++){
- this->v[i]=v[i];
- }
- }
- ParkingPlac &operator+=(Vozilo *v1){
- Vozilo **n=new Vozilo*[brElementi+1];
- for(int i=0;i<brElementi;i++)
- n[i]=v[i];
- n[brElementi++]=v1;
- delete [] v;
- v=n;
- return *this;
- }
- float presmetajVkupnaMasa(){
- float temp=0.0;
- for(int i=0;i<brElementi;i++)
- temp+=v[i]->Getmasa();
- return temp;
- }
- int brojVozilaPoshirokiOd(int n){
- int temp=0;
- for(int i=0;i<brElementi;i++)
- if(v[i]->Getshirina()>n)
- temp++;
- return temp;
- }
- int pogolemaNosivostOd(Vozilo& m){
- int temp=0;
- for(int i=0;i<brElementi;i++)
- {
- Kamion *b=dynamic_cast<Kamion*>(v[i]);
- if(b!=0)
- if(m.Getmasa()<v[i]->Getmasa())
- temp++;
- }
- return temp;
- }
- void pecati(){
- int temp1=0,temp2=0,temp3=0;
- for(int i=0;i<brElementi;i++){
- Avtomobil *a=dynamic_cast<Avtomobil*>(v[i]);
- if(a!=0)
- temp1++;
- Avtobus *s=dynamic_cast<Avtobus*>(v[i]);
- if(s!=0)
- temp2++;
- Kamion *b=dynamic_cast<Kamion*>(v[i]);
- if(b!=0)
- temp3++;
- }
- cout << "Broot na avtomobili e "<<temp1<<", brojot na avtobusi e "<<temp2<<" i brojot na kamioni e "<<temp3<<"."<<endl;
- }
- int vratiDnevnaZarabotka(){
- int temp=0;
- for(int i=0;i<brElementi;i++)
- temp+=v[i]->vratiDnevnaCena();
- return temp;
- }
- ~ParkingPlac(){
- for(int i=0;i<brElementi;i++)
- delete v[i];
- }
- };
- 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