Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- //Implementirati nasljeđivanje između odgovarajućih klasa
- //Osmisliti osnovne atribute i metode za rad sa klasama
- class Zaposlenik
- {
- protected:
- char* imePrezime;
- double iznosPrimanja;
- char* opisPosla;
- public:
- Zaposlenik(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato")
- {
- this->imePrezime=new char [strlen(imePrezime)+1];
- strcpy_s(this->imePrezime,strlen(imePrezime)+1,imePrezime);
- this->iznosPrimanja=iznosPrimanja;
- this->opisPosla=new char [strlen(opisPosla)+1];
- strcpy_s(this->opisPosla,strlen(opisPosla)+1,opisPosla);
- }
- virtual ~Zaposlenik()
- {
- delete[]imePrezime;
- delete[]opisPosla;
- }
- virtual void info()=0;
- };
- class StalniZaposlenik:public Zaposlenik
- {
- char *povlastice;
- public:
- StalniZaposlenik(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *povlastice="Nepoznato"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla)
- {
- this->povlastice=new char[strlen(povlastice)+1];
- strcpy_s(this->povlastice,strlen(povlastice)+1,povlastice);
- }
- ~StalniZaposlenik()
- {
- delete povlastice;
- }
- void info ()
- {
- char *crt="\n============================\n";
- cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nPovlastice: "<<povlastice<<crt;
- }
- };
- class PrivremeniZaposlenik:public Zaposlenik
- {
- char* ugovor;
- public:
- PrivremeniZaposlenik(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *ugovor="Nepoznato"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla)
- {
- this->ugovor=new char[strlen(ugovor)+1];
- strcpy_s(this->ugovor,strlen(ugovor)+1,ugovor);
- }
- ~PrivremeniZaposlenik()
- {
- delete []ugovor;
- }
- void info ()
- {
- char *crt="\n============================\n";
- cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nUgovor: "<<ugovor<<crt;
- }
- };
- class Menadzer:virtual public Zaposlenik
- {
- protected:
- char *upravljanje;
- public:
- Menadzer(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *upravljanje="Nepoznato"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla)
- {
- this->upravljanje=new char[strlen(upravljanje)+1];
- strcpy_s(this->upravljanje,strlen(upravljanje)+1,upravljanje);
- }
- ~Menadzer()
- {
- delete upravljanje;
- }
- void info ()
- {
- char *crt="\n============================\n";
- cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nUpravljanje: "<<upravljanje<<crt;
- }
- };
- class Konsultant:virtual public Zaposlenik
- {
- protected:
- char** konsultiranja;
- int brojac;
- int konsultacije;
- public:
- Konsultant(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla)
- {
- brojac=0;
- konsultacije=3;
- *konsultiranja=new char[konsultacije];
- }
- ~Konsultant()
- {
- for (int i=0;i<brojac;i++)
- delete konsultiranja[i];
- delete []konsultiranja;
- }
- void info ()
- {
- char *crt="\n============================\n";
- cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nKonsultacije:\n";
- for (int i=0;i<brojac;i++)
- cout<<i<<". konsultacije: "<<konsultiranja[i]<<endl;
- cout<<crt;
- }
- void konsultiranje(char *a)
- {
- if(brojac>=konsultacije)
- {
- char ** temp;
- *temp=new char[konsultacije+3];
- for(int i=0;i<brojac;i++)
- {
- temp[i]=new char(strlen(konsultiranja[i])+1);
- strcpy_s(temp[i],strlen(konsultiranja[i])+1,konsultiranja[i]);
- delete konsultiranja[i];
- }
- delete [] konsultiranja;
- konsultiranja=temp;
- konsultacije+=3;
- }
- konsultiranja[brojac]=new char[strlen(a)+1];
- strcpy_s(konsultiranja[brojac],strlen(a)+1,a);
- ++brojac;
- }
- };
- class Direktor:public Menadzer
- {
- float budget;
- public:
- Direktor(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *upravljanje="Nepoznato",float budget=0):Menadzer(imePrezime,iznosPrimanja,opisPosla,upravljanje)
- {
- this->budget=budget;
- }
- ~Direktor()
- {}
- void info ()
- {
- char *crt="\n============================\n";
- cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nUpravljanje: "<<upravljanje<<"\nBudget: "<<budget<<crt;
- }
- };
- class MenadzerKonsultant:public Menadzer,public Konsultant
- {
- char* vrsta;
- public:
- MenadzerKonsultant(char* imePrezime="Nepoznato", double iznosPrimanja = 0,char *opisPosla="Nepoznato", char *upravljanje="Nepoznato", char* vrsta="rijetka"):Zaposlenik(imePrezime,iznosPrimanja, opisPosla),Menadzer(imePrezime,iznosPrimanja,opisPosla,upravljanje),Konsultant(imePrezime,iznosPrimanja,opisPosla)
- {
- this->vrsta=new char[strlen(vrsta)+1];
- strcpy_s(this->vrsta,strlen(vrsta)+1,vrsta);
- }
- ~MenadzerKonsultant()
- {
- delete []vrsta;
- }
- void info ()
- {
- char *crt="\n============================\n";
- cout<<crt<<"\nIme i Prezime: "<<imePrezime<<"\nIznos Primanja: "<<iznosPrimanja<<"\nOpis posla: "<<opisPosla<<"\nKonsultacije:"<<"\nUpravljanje: "<<upravljanje<<endl;
- for (int i=0;i<brojac;i++)
- cout<<i<<". konsultacije: "<<konsultiranja[i]<<endl;
- cout<<crt;
- }
- };
- void main()
- {
- Zaposlenik *pok1;
- Zaposlenik *pok2;
- Zaposlenik *pok3;
- Zaposlenik *pok4;
- pok1=new StalniZaposlenik("Mike Smith",2200,"Analiticar","Parking: P-135; Topli obroci");
- pok2=new PrivremeniZaposlenik("Ane Booth",1500,"Sekretarica","6 Mjeseci");
- pok3=new Direktor("David Copperfield",5500,"Otpustanje radnika","firmom",50000);
- pok4=new MenadzerKonsultant("Tom Hanks",3000,"Konsultiranje sa menedzerima, direktorom i ostalim zaposlenicima","Upravljanje svih odjela","Glavni");
- pok4->konsultiranje("Test");
- pok1->info();
- pok2->info();
- pok3->info();
- pok4->info();
- }
Advertisement
Add Comment
Please, Sign In to add comment