You are on page 1of 3

#include <iostream>

#include <string>

class Angajat{
private:
std::string nume;
std::string departament;
public:
Angajat(std::string nume="", std::string departament=""){
this->nume=nume;
this->departament=departament;
}
void set_nume(std::string nume){
this->nume=nume;
}
std::string get_nume(){
return this->nume;
}
void set_departament(std::string departament){
this->departament=departament;
}
std::string get_departament(){
return this->departament;
}
virtual void afisare() = 0;
virtual float rentabilitate_angajat(){
return 0;
}
};
class Salariat: public Angajat{
private:
int norma;
int vechime;
float salariu_net;
public:
Salariat(std::string nume="", std::string departament="", int norma=0, int
vechime=0, float salariu_net=0):
Angajat(nume, departament), norma(norma), vechime(vechime),
salariu_net(salariu_net){}

void set_norma(int norma){


this->norma=norma;
}
int get_norma(){
return this->norma;
}
void set_vechime(int vechime){
this->vechime=vechime;
}
int get_vechime(){
return this->vechime;
}
void set_salariu_net(int salariu_net){
this->salariu_net=salariu_net;
}
int get_salariu_net(){
return this->salariu_net;
}
void afisare(){
std::cout<<get_nume()<<" ";
std::cout<<get_norma()<<" ";
std::cout<<get_vechime()<<" ";
std::cout<<get_salariu_net()<<'\n';
}
};
class Colaborator: public Angajat{
private:
float onorariu;
float nr_prestari_anuale;
public:
Colaborator(std::string nume="", std::string departament="", float onorariu=0,
float nr_prestari_anuale=0):
Angajat(nume, departament), onorariu(onorariu),
nr_prestari_anuale(nr_prestari_anuale){}

void set_onorariu(float onorariu){


this->onorariu=onorariu;
}
float get_onorariu(){
return this->onorariu;
}
void set_nr_prestari_anuale(float nr_prestari_anuale){
this->nr_prestari_anuale=nr_prestari_anuale;
}
float get_nr_prestari_anuale(){
return this->nr_prestari_anuale;
}

void afisare(){
std::cout<<get_nume()<<" ";
std::cout<<get_onorariu()<<" ";
std::cout<<get_nr_prestari_anuale()<<'\n';
}
};

int main(){
int n, ok, norma,vechime;
std::string tip_angajat;
std::string nume;
std::string departament;
float salariu_net, onorariu, nr_prestari_anuale;
std::cin>>n;
Angajat **A=new Angajat*[n];
for(int i=0;i<n;i++){
std::cin>>tip_angajat;
std::cin>>nume;
std::cin>>departament;
if(tip_angajat=="salariat"){
std::cin>>norma;
std::cin>>vechime;
std::cin>>salariu_net;
A[i]=new Salariat(nume,departament,norma,vechime,salariu_net);
}
if(tip_angajat=="colaborator"){
std::cin>>onorariu;
std::cin>>nr_prestari_anuale;
A[i]= new Colaborator(nume, departament, onorariu, nr_prestari_anuale);
}
}
std::cin>>ok;
switch(ok){
case 1:{
std::string dep;
std::cin>>dep;
for(int i=0;i<n;i++){
if(A[i]->get_departament()==dep){
A[i]->afisare();
}
}
}break;
}

return 0;
}

You might also like