Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- class data
- {
- int zi;
- int luna;
- int an;
- public:
- data(int zi, int luna, int an) : zi(zi), luna(luna), an(an) {}
- void afisare()
- {
- cout<<zi<<"."<<luna<<"."<<an;
- }
- };
- class angajat
- {
- private:
- string nume, prenume;
- int tip_contract;
- int tip_activitate; //1=TESA 2=lucrativ
- data data_contract;
- public:
- angajat(string nume, string prenume, int tip_contract, int tip_activitate, int zi, int luna, int an)
- : nume(nume), prenume(prenume), tip_contract(tip_contract), tip_activitate(tip_activitate), data_contract(data_contract){}
- data getData()
- {
- return data_contract;
- }
- string getNume()
- {
- return nume;
- }
- string getPrenume()
- {
- return prenume;
- }
- int getTip_contract()
- {
- return tip_contract;
- }
- int getTip_activitate()
- {
- return tip_activitate;
- }
- virtual void afisare()=0;
- };
- class permanent : public angajat
- {
- int prima_fixa;
- public:
- permanent(string nume, string prenume, int tip_contract, int tip_activitate, int zi, int luna, int an, int prima_fixa)
- : angajat(nume, prenume, tip_contract, tip_activitate, zi, luna, an), prima_fixa(prima_fixa) {}
- int getPrima_fixa()
- {
- return prima_fixa;
- }
- };
- class TESA : public permanent
- {
- int nr_weekend;
- public:
- TESA(string nume, string prenume, int tip_contract, int tip_activitate, int zi, int luna, int an, int prima_fixa, int nr_weekend)
- :permanent(nume, prenume, tip_contract, tip_activitate, zi, luna, an, prima_fixa), nr_weekend(nr_weekend) {}
- void afisare()
- {
- cout<<getNume()<<" "<<getPrenume()<<"contract permanent";
- getData().afisare();
- cout<<"TESA"<<" "<<"weekend: "<<nr_weekend<<", "<<"prima: "<<getPrima_fixa()<<" RON";
- }
- };
- class lucrativ : public permanent
- {
- int spor;
- int nr_copii;
- int vechime;
- public:
- lucrativ(string nume, string prenume, int tip_contract, int tip_activitate, int zi, int luna, int an, int prima_fixa, int nr_copii, int vechime)
- :permanent(nume, prenume, tip_contract, tip_activitate, zi, luna, an, prima_fixa), nr_copii(nr_copii), vechime(vechime)
- {
- if(an==2014)
- {
- vechime=0;
- }
- else vechime=2014-an;
- prima_fixa=(vechime/100)*nr_copii;
- }
- void afisare()
- {
- cout<<getNume()<<" "<<getPrenume()<<"contract permanent";
- getData().afisare();
- cout<<"lucrativ"<<" "<<"minori: "<<nr_copii<<", "<<"prima: "<<getPrima_fixa()<<" RON";
- }
- };
- class colaborativ : public angajat
- {
- int prima;
- data data_terminare;
- public:
- colaborativ(string nume, string prenume, int tip_contract, int tip_activitate, int zi, int luna, int an, int zi_terminare, int luna_terminare, int an_terminare, int prima)
- : angajat(nume, prenume, tip_contract, tip_activitate, zi, luna, an), data_terminare(zi_terminare, luna_terminare, an_terminare)
- {
- if(an_terminare==2014) prima=prima/2;
- }
- void afisare()
- {
- cout<<getNume()<<" "<<getPrenume()<<"plata cu ora";
- getData().afisare();
- cout<<"-";
- data_terminare.afisare();
- cout<<" prima: "<<prima<<" RON";
- }
- };
- int main()
- {
- vector<angajat*> ang;
- int i, n;
- int prima_fixa;
- string nume,prenume;
- int tip_contract,tip_activitate,zi,luna,an,nr_weekend;
- cin>>prima_fixa;
- cin>>n;
- for(i=1; i<=n; i++)
- {
- cin>>tip_contract; //plata cu ora = 2 permanent = 1
- if(tip_contract==1)
- {
- cin>>tip_activitate; //tesa- 1 lucra - 2
- if(tip_activitate==1)
- {
- cin>>nume>>prenume>>zi>>luna>>an>>nr_weekend;
- TESA *x=new TESA(nume,prenume,tip_contract,tip_activitate,zi,luna,an, prima_fixa, nr_weekend);
- ang.push_back(x);
- }
- }
- }
- for(i=0; i<ang.size(); i++) ang[i]->afisare();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement