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, нивниот број, како и покажувач кон ојбект од возач и враќа како резултат бројот на возачи кои имаат иста заработувачка по трка со проследениот возач.
- Sample input
- 5
- 3
- Hamilton 30 95 0 55000
- Vetel 26 88 0 14000
- Barrichello 38 198 1 30000
- Rossi 32 130 1 850
- Lorenzo 24 45 0 900
- VozacX 38 198 1 850
- Sample output
- === DANOK ===
- Hamilton
- 30
- 95
- 1650
- Vetel
- 26
- 88
- 420
- Barrichello
- 38
- 198
- VETERAN
- 900
- Rossi
- 32
- 130
- VETERAN
- 4250
- Lorenzo
- 24
- 45
- 3600
- === VOZAC X ===
- VozacX
- 38
- 198
- VETERAN
- === SO ISTA ZARABOTUVACKA KAKO VOZAC X ===
- 1
- //CODE//
- #include<iostream>
- #include<cstring>
- using namespace std;
- class Vozac{
- protected:
- char ime[100];
- int godini, trki;
- bool veteran;
- public:
- Vozac(const char *ime = " ", int godini = 0, int trki = 0, bool veteran = false){
- strcpy(this -> ime, ime);
- this -> godini = godini;
- this -> trki = trki;
- this -> veteran = veteran;}
- friend ostream& operator<<(ostream &out, Vozac &v){
- out<<v.ime<<endl;
- out<<v.godini<<endl;
- out<<v.trki<<endl;
- if(v.veteran) out<<"VETERAN"<<endl;
- return out;}
- int getTrki(){return this -> trki;}
- bool getVeteran(){return this -> veteran;}
- virtual float zarabotuvacka() = 0;
- virtual float danok() = 0;
- friend bool operator==(Vozac &v1, Vozac *v2)
- {return (v1.zarabotuvacka() == v2 -> zarabotuvacka());}
- };
- class Avtomobilist : public Vozac{
- float cena;
- public:
- Avtomobilist(const char *ime = " ", int godini = 0, int trki = 0, bool veteran = false, float cena = 0.0): Vozac(ime, godini, trki, veteran){
- this -> cena = cena;}
- float zarabotuvacka(){return cena / 5;}
- float danok(){
- if(getTrki() > 10)
- return zarabotuvacka() * 0.15;
- else
- return zarabotuvacka() * 0.1;}
- };
- class Motociklist : public Vozac{
- int mok;
- public:
- Motociklist(const char *ime = " ", int godini = 0, int trki = 0, bool veteran = false, int mok = 0):Vozac(ime, godini, trki,veteran){
- this -> mok = mok;}
- float zarabotuvacka(){return mok * 20;}
- float danok(){
- if(getVeteran())
- return zarabotuvacka() * 0.25;
- else
- return zarabotuvacka() * 0.2;
- }
- };
- float soIstaZarabotuvachka(Vozac **v, int n, Vozac *vx){
- int br = 0;
- for(int i = 0; i < n; i++){
- if(*vx == v[i])
- 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;
- }
Add Comment
Please, Sign In to add comment