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;
- }
- float getMasa() { return masa; }
- int getSirina() { return sirina; }
- virtual int vratiDnevnaCena() = 0;
- };
- class Avtomobil : public Vozilo {
- private:
- 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;
- else
- return 130;
- }
- };
- class Avtobus : public Vozilo {
- private:
- 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 brPatnici * 5;
- }
- };
- class Kamion : public Vozilo {
- private:
- float maxTovar;
- public:
- Kamion(float masa = 0, int sirina = 0, int visina = 0, float maxTovar = 0) : Vozilo(masa, sirina, visina) {
- this->maxTovar = maxTovar;
- }
- int vratiDnevnaCena() {
- return (masa+maxTovar)*0.02;
- }
- };
- class ParkingPlac {
- private:
- Vozilo **v;
- int n;
- public:
- ParkingPlac() {
- n = 0;
- v = new Vozilo*[50];
- }
- ParkingPlac(Vozilo **v, int n) {
- this->n = n;
- this->v = new Vozilo*[n];
- for(int i = 0; i < n; ++i)
- this->v[i] = v[i];
- }
- ~ParkingPlac() {
- for(int i = 0; i < n; ++i)
- delete v[i];
- delete [] v;
- }
- ParkingPlac &operator +=(Vozilo *x) {
- v[n] = x;
- n++;
- return *this;
- }
- float presmetajVkupnaMasa() {
- float res = 0;
- for(int i = 0; i < n; ++i)
- res += v[i]->getMasa();
- return res;
- }
- int brojVozilaPoshirokiOd(int l) {
- int counter = 0;
- for(int i = 0; i < n; ++i) {
- if(v[i]->getSirina() > l)
- counter++;
- }
- return counter;
- }
- void pecati() {
- int cars = 0;
- int buses = 0;
- int trucks = 0;
- for(int i = 0; i < n; ++i) {
- Avtomobil *car = dynamic_cast<Avtomobil *>(v[i]);
- if(car != 0)
- cars++;
- Avtobus *bus = dynamic_cast<Avtobus *>(v[i]);
- if(bus != 0)
- buses++;
- Kamion *truck = dynamic_cast<Kamion *>(v[i]);
- if(truck != 0)
- trucks++;
- }
- cout << "Brojot na avtomobili e " << cars << ", brojot na avtobusi e " << buses << " i brojot na kamioni e " << trucks << endl;
- }
- int pogolemaNosivostOd(Vozilo &x) {
- int counter = 0;
- for(int i = 0; i < n; ++i) {
- Kamion *truck = dynamic_cast<Kamion *>(v[i]);
- if(truck != 0) {
- if(v[i]->getMasa() > x.getMasa())
- counter++;
- }
- }
- return counter;
- }
- int vratiDnevnaZarabotka() {
- float total = 0;
- for(int i = 0; i < n; ++i) {
- total += v[i]->vratiDnevnaCena();
- }
- return total;
- }
- };
- 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;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement