Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Vozac
- {
- private:
- char *ime;
- int vozrast;
- int brTrki;
- bool daliVeteran;
- public:
- Vozac()
- {
- this->ime = new char[0];
- }
- Vozac(char *ime,int vozrast,int brTrki,bool daliVeteran)
- {
- this->ime = new char [strlen(ime)+1];
- strcpy(this->ime,ime);
- this->vozrast = vozrast;
- this->brTrki = brTrki;
- this->daliVeteran = daliVeteran;
- }
- Vozac(const Vozac &v)
- {
- this->ime = new char [strlen(v.ime)+1];
- strcpy(this->ime,v.ime);
- this->vozrast = v.vozrast;
- this->brTrki = v.brTrki;
- this->daliVeteran = v.daliVeteran;
- }
- Vozac& operator=(const Vozac &v)
- {
- if(this!=&v)
- {
- delete []ime;
- this->ime = new char [strlen(v.ime)+1];
- strcpy(this->ime,v.ime);
- this->vozrast = v.vozrast;
- this->brTrki = v.brTrki;
- this->daliVeteran = v.daliVeteran;
- }
- return *this;
- }
- friend ostream& operator<<(ostream &vraka, Vozac &v)
- {
- vraka<<v.ime<<endl;
- vraka<<v.vozrast<<endl;
- vraka<<v.brTrki<<endl;
- if(v.daliVeteran)
- {
- cout<<"VETERAN"<<endl;
- }
- return vraka;
- }
- int getBrTrki()
- {
- return brTrki;
- }
- bool getDaliVeteran()
- {
- return daliVeteran;
- }
- virtual double danok() =0;//"cisto virtuelna fukncija" apstraktna funkcija (nema telo{}), klasata e apstraktna
- virtual double zarabotuvacka() =0;//"cisto virtuelna fukncija" apstraktna funkcija (nema telo{}), klasata e apstraktna
- bool operator==(Vozac &v)
- {
- return this->zarabotuvacka()==v.zarabotuvacka();
- }
- virtual ~Vozac()
- {
- delete []ime;
- }
- };
- class Avtomobilist : public Vozac
- {
- private:
- double cenaAvtomobil;
- public:
- Avtomobilist(){}
- Avtomobilist(char *ime,int vozrast,int brTrki,bool daliVeteran,double cenaAvtomobil) : Vozac(ime,vozrast,brTrki,daliVeteran)
- {
- this->cenaAvtomobil = cenaAvtomobil;
- }
- Avtomobilist(const Vozac &v, double cenaAvtomobil) : Vozac(v)//ne e potrebno da se napise vo slucajov copy constructor
- {
- this->cenaAvtomobil = cenaAvtomobil;
- }
- double zarabotuvacka()
- {
- return cenaAvtomobil/5;
- }
- double danok()
- {
- if(getBrTrki() >10)
- {
- return zarabotuvacka()*15/100;
- }
- return zarabotuvacka()*10/100;
- }
- ~Avtomobilist(){}
- };
- class Motociklist : public Vozac
- {
- private:
- int moknost;
- public:
- Motociklist(){}
- Motociklist(char *ime,int vozrast,int brTrki,bool daliVeteran,int moknost) : Vozac(ime,vozrast,brTrki,daliVeteran)
- {
- this->moknost = moknost;
- }
- Motociklist(const Vozac &v, int moknost) : Vozac(v)//ne e potrebno da se napise vo slucajov copy constructor
- {
- this->moknost = moknost;
- }
- double zarabotuvacka()
- {
- return moknost*20;
- }
- double danok()
- {
- if(getDaliVeteran())
- {
- return zarabotuvacka()*25/100;
- }
- return zarabotuvacka()*20/100;
- }
- ~Motociklist(){}
- };
- int soIstaZarabotuvachka(Vozac **v,int n,Vozac *vozac)
- {
- int br=0;
- for(int i=0;i<n;i++)
- {
- if(v[i]->zarabotuvacka() == vozac->zarabotuvacka())
- br++;
- }
- return br;
- }
- int main() {
- int n, x;
- cin >> n >> x;
- Vozac **v = new Vozac*[n];
- char ime[100];
- int vozrast;
- int trki;
- bool vet;
- for(int i = 0; i < n; ++i) {
- cin >> ime >> vozrast >> trki >> vet;
- if(i < x) {
- float cena_avto;
- cin >> cena_avto;
- v[i] = new Avtomobilist(ime, vozrast, trki, vet, cena_avto);
- } else {
- int mokjnost;
- cin >> mokjnost;
- v[i] = new Motociklist(ime, vozrast, trki, vet, mokjnost);
- }
- }
- cout << "=== DANOK ===" << endl;
- for(int i = 0; i < n; ++i) {
- cout << *v[i];
- cout << v[i]->danok() << endl;
- }
- cin >> ime >> vozrast >> trki >> vet;
- int mokjnost;
- cin >> mokjnost;
- Vozac *vx = new Motociklist(ime, vozrast, trki, vet, mokjnost);
- cout << "=== VOZAC X ===" << endl;
- cout << *vx;
- cout << "=== SO ISTA ZARABOTUVACKA KAKO VOZAC X ===" << endl;
- cout << soIstaZarabotuvachka(v, n, vx);
- for(int i = 0; i < n; ++i) {
- delete v[i];
- }
- delete [] v;
- delete vx;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement