Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Возач Problem 3 (0 / 0)
- Да се дефинира класа Vozac во која се чуваат информации за:
- име (низа од максимум 100 знаци)
- возраст (цел број)
- број на трки (цел број)
- дали е ветеран (да/не).
- Да се преоптоварат:
- операторот << за печатење кој ќе ги печати името, возраст, бројот на трки и дали е ветеран (се печати VETERAN)
- операторот == за споредување на два возачи според заработувачката по трка.
- Од оваа класа да се изведат две нови класи Avtomobilist и Motociklist.
- За автомобилистот дополнително се чува:
- цена на автомобилот (децимален број).
- За мотоциклистот дополнително се чува:
- моќност на мотор (цел број).
- Заработувачката по трка на возачите се пресметува како:
- за автомобилостот заработувачката по трка е CENAAVTOMOBIL5
- за мотоциклистот заработувачката по трка е MOKJNOSTNAMOTOR∗20
- Секој автомобилист плаќа данок на заработка. Да се напишат соодветни методи за пресметување данок:
- за автомобилисти: ако бројот на трки е поголем од 10 стапката на данок е 15% од заработката, инаку 10% од заработката.
- за мотоциклисти: ако е ветеран стапката на данок е 25% од заработката, инаку 20% од заработката.
- Да се напше надворешна функција soIstaZarabotuvachka која како аргументи прима низа од покажувачи од класата Vocac, нивниот број, како и покажувач кон ојбект од возач и враќа како резултат бројот на возачи кои имаат иста заработувачка по трка со проследениот возач.
- // vashiot kod ovde
- #include <iostream>
- #include<cstring>
- using namespace std;
- class Vozac
- {
- protected:
- char ime[100];
- int vozrast;
- int trki;
- bool vet;
- public:
- Vozac(){}
- Vozac(char *ime="",int vozrast=0,int trki=0,bool vet=false)
- {
- strcpy(this->ime,ime);
- this->vozrast=vozrast;
- this->trki=trki;
- this->vet=vet;
- }
- Vozac( const Vozac &d)
- {
- strcpy(this->ime,d.ime);
- this->vozrast=d.vozrast;
- this->trki=d.trki;
- this->vet=d.vet;
- }
- friend ostream &operator<<(ostream &output,const Vozac &d)
- {
- output << d.ime << endl << d.vozrast << endl << d.trki << endl;
- if(d.vet) output << "VETERAN" << endl;
- return output;
- }
- /*friend bool &operator==(const Vozac &a, const Vozac &b)
- {
- if(a.zarabotuvachka()==b.zarabotuvachka())
- return true;
- else
- return false;
- }*/
- ~Vozac(){}
- virtual float zarabotuvachka()=0;
- virtual float danok()=0;
- };
- class Avtomobilist:public Vozac
- {
- private:
- float cena;
- public:
- Avtomobilist(char *ime="",int vozrast=0,int trki=0,bool vet=false,float cena=0):Vozac(ime,vozrast,trki,vet)
- {
- this->cena=cena;
- }
- ~Avtomobilist(){}
- float zarabotuvachka()
- {
- return cena/5;
- }
- float danok()
- {
- if(trki>10)
- return zarabotuvachka()*0.15;
- else
- return zarabotuvachka()*0.10;
- }
- };
- class Motociklist:public Vozac
- {
- private:
- int moknost;
- public:
- Motociklist(char *ime="",int vozrast=0,int trki=0,bool vet=false,int moknost=0):Vozac(ime,vozrast,trki,vet)
- {
- this->moknost=moknost;
- }
- ~Motociklist(){}
- float zarabotuvachka()
- {
- return moknost*20;
- }
- float danok()
- {
- if(vet)
- return zarabotuvachka()*0.25;
- else
- return zarabotuvachka()*0.20;
- }
- };
- int soIstaZarabotuvachka(Vozac **vozaci, int golemina,Vozac *vozac)
- {
- int isti=0;
- for(int i=0;i<golemina;i++)
- {
- Vozac *tekoven = vozaci[i];
- if(tekoven->zarabotuvachka() == vozac->zarabotuvachka())
- isti++;
- }
- return isti;
- }
- 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;
- return 0;
- }
Add Comment
Please, Sign In to add comment