Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // vashiot kod ovde
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Vozac{
- protected:
- char ime[100];
- int vozrast;
- int brTrki;
- bool dali_e_veteran;
- public:
- Vozac(char *ime="",int vozrast=0,int brTrki=0,bool dali_e_veteran=false)
- {
- strcpy(this->ime,ime);
- this->vozrast=vozrast;
- this->brTrki=brTrki;
- this->dali_e_veteran=dali_e_veteran;
- }
- Vozac(Vozac &v)
- {
- strcpy(this->ime,v.ime);
- this->vozrast=v.vozrast;
- this->brTrki=v.brTrki;
- this->dali_e_veteran=v.dali_e_veteran;
- }
- friend ostream &operator<<(ostream &out, Vozac &v)
- {
- out<<v.ime<<endl;
- out<<v.vozrast<<endl;
- out<<v.brTrki<<endl;
- if(v.dali_e_veteran==1)
- out<<"VETERAN"<<endl;
- return out;
- }
- virtual int zarabotuvacka()=0;
- virtual int danok()=0;
- virtual ~Vozac(){}
- };
- class Avtomobilist:public Vozac{
- private:
- float cena_na_avto;
- public:
- Avtomobilist(char *ime="",int vozrast=0,int brTrki=0,bool dali_e_veteran=false
- ,float cena_na_avto=0.0)
- :Vozac(ime,vozrast,brTrki,dali_e_veteran)
- {
- this->cena_na_avto=cena_na_avto;
- }
- int zarabotuvacka()
- {
- return cena_na_avto/5;
- }
- int danok()
- {
- if(brTrki>10)
- {
- return zarabotuvacka()*0.15;
- }
- else return zarabotuvacka()*0.10;
- }
- };
- class Motociklist:public Vozac{
- private:
- int moknost;
- public:
- Motociklist(char *ime="",int vozrast=0,int brTrki=0,bool dali_e_veteran=false,
- int moknost=0):Vozac(ime,vozrast,brTrki,dali_e_veteran)
- {
- this->moknost=moknost;
- }
- int zarabotuvacka()
- {
- return moknost*20;
- }
- int danok()
- {
- if(dali_e_veteran==true)
- {
- return zarabotuvacka()*0.25;
- }
- else return zarabotuvacka()*0.20;
- }
- };
- bool operator==(Vozac *v,Vozac &v1) // Ovde mora vtoroto da e referensa, don't ask why.
- {
- if(v->zarabotuvacka()==v1.zarabotuvacka())
- return true;
- else return
- false;
- }
- int soIstaZarabotuvachka(Vozac **v,int n,Vozac *v1)
- {
- int brojac=0;
- for(int i=0;i<n;i++)
- {
- if(v[i]==*v1) //Tuka vtoroto mislam deka go dereferensirame bidejki sporeduvame so element od niza.
- // mora ovde *v1 bidejki ako nema * ce ja zeme default zarabotuvackata sekogas
- brojac++;
- }
- return brojac;
- // Ako sve prethodno vi bese tocno osven ova funkcija ne se sekirajte decki ima nadez za vas.
- }
- 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