You are on page 1of 4

Metoda I

#include <iostream>
#include <vector>
#include <string>

using namespace std;

// Clasa de baza
class Angajat {
protected:
string nume;
string adresa;
string oras;

public:
Angajat(string nume, string adresa, string oras)
: nume(nume), adresa(adresa), oras(oras) {}

virtual void afisare() const {


cout << "Nume: " << nume << "\nAdresa: " << adresa << "\nOras: " << oras <<
endl;
}
};

// Clasa derivata 1
class AngajatPermanent : public Angajat {
private:
double salariu_lunar;

public:
AngajatPermanent(string nume, string adresa, string oras, double salariu_lunar)
: Angajat(nume, adresa, oras), salariu_lunar(salariu_lunar) {}

virtual void afisare() const override {


Angajat::afisare();
cout << "Salariu lunar: " << salariu_lunar << endl;
}

double getSalariu() const {


return salariu_lunar;
}
};

// Clasa derivata 2
class Contractor : public Angajat {
private:
int nr_ore_lucrate;
float tarif_orar;

public:
Contractor(string nume, string adresa, string oras, int nr_ore_lucrate, float
tarif_orar)
: Angajat(nume, adresa, oras), nr_ore_lucrate(nr_ore_lucrate),
tarif_orar(tarif_orar) {}

virtual void afisare() const override {


Angajat::afisare();
cout << "Numar ore lucrate: " << nr_ore_lucrate << "\nTarif orar: " <<
tarif_orar << endl;
}

int getNrOre() const {


return nr_ore_lucrate;
}
};

int main() {
// Creare vector de obiecte Angajat
vector<Angajat*> angajati;

// Adaugare angajati in vector


angajati.push_back(new Angajat("Ion Popescu", "Str. Primaverii nr. 1",
"Iasi"));
angajati.push_back(new AngajatPermanent("Ana Maria Georgescu", "Str. Mihai
Viteazu nr. 2", "Bucuresti", 4500.0));
angajati.push_back(new Contractor("Mihai Radu", "Str. Libertatii nr. 3",
"Cluj", 120, 50.0));
angajati.push_back(new AngajatPermanent("Andrei Ionescu", "Str. Revolutiei nr.
4", "Timisoara", 3500.0));
angajati.push_back(new Contractor("Maria Popa", "Str. Garii nr. 5", "Brasov",
80, 40.0));

// 1. Afisare angajati al caror nume incepe cu un anumit grup de litere


string grup_litere;
cout << "Introduceti grupul de litere: ";
getline(cin, grup_litere);

Metoda II

#include <iostream>
#include <vector>
#include <string>

using namespace std;

class Angajat {
public:
string nume;
string adresa;
string oras;
};

class AngajatPermanent : public Angajat {


public:
double salariu_lunar;
};

class Contractor : public Angajat {


public:
int nr_ore_lucrate;
float tarif_orar;
};

int main() {
vector<Angajat*> angajati;
// Adaugam angajati in vector
AngajatPermanent *ap1 = new AngajatPermanent();
ap1->nume = "Alexandru";
ap1->adresa = "Strada X, nr. 10";
ap1->oras = "Bucuresti";
ap1->salariu_lunar = 3000;
angajati.push_back(ap1);

Contractor *c1 = new Contractor();


c1->nume = "Bogdan";
c1->adresa = "Strada Y, nr. 20";
c1->oras = "Bucuresti";
c1->nr_ore_lucrate = 120;
c1->tarif_orar = 10;
angajati.push_back(c1);

// Cautam angajatii ale caror nume incep cu un anumit grup de litere


string grup_litere;
cout << "Introduceti un grup de litere: ";
cin >> grup_litere;

cout << "Angajatii ale caror nume incep cu " << grup_litere << " sunt:" <<
endl;
for (auto it = angajati.begin(); it != angajati.end(); it++) {
if ((*it)->nume.find(grup_litere) == 0) {
cout << (*it)->nume << endl;
}
}

return 0;
}

#include <iostream>
#include <list>
#include <string>

using namespace std;

class Angajat {
public:
string nume;
string adresa;
string oras;
};

class AngajatPermanent : public Angajat {


public:
double salariu_lunar;
};

class Contractor : public Angajat {


public:
int nr_ore_lucrate;
float tarif_orar;
};

int main() {
list<AngajatPermanent*> angajati_permanenti;

You might also like