Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Vozilo{
- protected:
- float masa;
- int shirina;
- int visina;
- public:
- Vozilo(float masa=0.0,int shirina=0,int visina=0)
- {
- this->masa=masa;
- this->shirina=shirina;
- this->visina=visina;
- }
- virtual int vratiDnevnaCena() = 0;
- float get_masa()
- {
- return masa;
- }
- int get_shirina() {
- return shirina;
- }
- Vozilo(const Vozilo &v) {
- this->masa = v.masa;
- this->shirina = v.shirina;
- this-> visina = v.visina;
- }
- virtual int getType() = 0;
- };
- class Avtomobil:public Vozilo{
- private:
- int brVrati;
- public:
- Avtomobil(float masa=0.0,int shirina=0,int visina=0,int brVrati=0)
- :Vozilo(masa,shirina,visina)
- {
- this->brVrati=brVrati;
- }
- int vratiDnevnaCena()
- {
- if(brVrati<5)
- {
- return 100;
- }
- else return 130;
- }
- int getType()
- {
- return 1;
- }
- Avtomobil (const Avtomobil &at) : Vozilo (at) {
- this->brVrati = at.brVrati;
- }
- };
- class Avtobus:public Vozilo{
- private:
- int brPatnici;
- public:
- Avtobus(float masa=0.0,int shirina=0,int visina=0,int brPatnici=0)
- :Vozilo(masa,shirina,visina)
- {
- this->brPatnici=brPatnici;
- }
- int vratiDnevnaCena()
- {
- return brPatnici*5;
- }
- int getType()
- {
- return 2;
- }
- Avtobus(const Avtobus &av) : Vozilo (av) {
- this->brPatnici = brPatnici;
- }
- };
- class Kamion:public Vozilo{
- private:
- float maxM;
- public:
- Kamion(float masa=0.0,int shirina=0,int visina=0, float maxM=0.0)
- :Vozilo(masa,shirina,visina)
- {
- this->maxM=maxM;
- }
- int vratiDnevnaCena()
- {
- return (masa+maxM)*0.02;
- }
- int getType()
- {
- return 3;
- }
- float get_maxM()
- {
- return maxM;
- }
- Kamion (const Kamion &k) : Vozilo(k) {
- this->maxM = k.maxM;
- }
- };
- class ParkingPlac {
- private:
- Vozilo **niza;
- int n;
- public:
- ParkingPlac(){
- this-> niza = new Vozilo * [0];
- this-> n = 0;
- }
- ParkingPlac(Vozilo **niza,int n)
- {
- niza = new Vozilo*[n];
- for(int i =0;i < n;i++)
- this->niza[i]=niza[i];
- this->n=n;
- }
- ParkingPlac(const ParkingPlac &pp)
- {
- this-> n = pp.n;
- this-> niza = new Vozilo*[pp.n];
- for(int i=0;i<n;i++)
- niza[i]=pp.niza[i];
- }
- ParkingPlac &operator +=(Vozilo *voz) {//операторот += за додавање на ново возило
- Vozilo ** tmp = new Vozilo * [n+1];
- for(int i=0; i <n; i++) {
- tmp[i] = niza[i];
- }
- tmp[n++] = voz;
- // delete [] v;
- niza = tmp;
- return *this;
- }
- float presmetajVkupnaMasa()
- {
- float vkM=0;
- for(int i=0;i<n;i++)
- vkM+=niza[i]->get_masa();
- return vkM;
- }
- int brojVozilaPoshirokiOd(int length)
- {
- int poShiroki=0;
- for(int i=0;i<n;i++)
- {
- if(length<niza[i]->get_shirina())
- poShiroki++;
- }
- return poShiroki;
- }
- void pecati () { //функција void pecati() со која се печати:
- int koli=0, jsp=0, kamionc=0;
- for(int i=0;i<n;i++){
- Avtomobil* a=dynamic_cast<Avtomobil*>(niza[i]);
- if (a!=0) koli++;
- Avtobus* b=dynamic_cast<Avtobus*>(niza[i]);
- if (b!=0) jsp++;
- Kamion* k=dynamic_cast<Kamion*>(niza[i]);
- if (k!=0) kamionc++;
- }
- cout<<"Brojot na avtomobili e "<<koli;
- cout<<", brojot na avtobusi e "<<jsp;
- cout<<" i brojot na kamioni e "<<kamionc<<"."<<endl;
- }
- int pogolemaNosivostOd (Vozilo &vi) { //функција int pogolemaNosivostOd(Vozilo &v)
- Kamion * k;
- int counter=0;
- for(int i=0; i <n; i++) {
- if( (k = dynamic_cast <Kamion *> (niza[i])) ) {
- if(k->get_masa() > vi.get_masa())
- counter++;
- }
- }
- return counter;
- }
- int vratiDnevnaZarabotka()
- {
- int total=0;
- for(int i=0;i<n;i++)
- total = total + niza[i]->vratiDnevnaCena();
- return total;
- }
- ~ParkingPlac()
- {
- // delete [] niza;
- }
- };
- //вашиот код треба да биде тука
- 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