Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- using namespace std;
- class Angajat
- {
- char * nume;
- float salariu;
- public:
- Angajat();
- Angajat(char *, float );
- Angajat(Angajat& );
- virtual void display(ostream&);
- friend ostream& operator<<(ostream&, Angajat );
- friend istream& operator>>(istream&, Angajat&);
- Angajat& operator=(const Angajat& );
- float getSalariu();
- void setSalariu(float);
- virtual ~Angajat();
- };
- Angajat::Angajat()
- {
- salariu=0;
- nume=NULL;
- }
- Angajat::Angajat(char *n, float sal)
- {
- nume = new char (strlen(n)+1);
- strcpy(nume, n);
- salariu = sal;
- }
- Angajat::Angajat (Angajat& r)
- {
- nume = new char (strlen(r.nume)+1);
- strcpy(nume, r.nume);
- salariu=r.salariu;
- }
- void Angajat::display(ostream &o)
- {
- o<<"NUME:"<<nume<<"\tSALARIU:"<<salariu;
- }
- ostream& operator<<(ostream &o, Angajat a)
- {
- a.display(o); o<<"\n";
- return o;
- }
- istream& operator>>(istream &i, Angajat &a)
- {
- unsigned int j;
- string aux;
- cin>>aux;
- delete []a.nume;
- a.nume = new char [aux.size() +1 ];
- for (j=0; j<aux.size(); j++)
- a.nume[j]=aux[j];
- a.nume[aux.size()]=0;
- i>>a.salariu;
- return i;
- }
- Angajat& Angajat::operator=(const Angajat &a)
- {
- if (this!=&a)
- {
- delete []nume;
- nume = new char[strlen(a.nume)+1];
- strcpy(nume,a.nume);
- salariu=a.salariu;
- }
- return *this;
- }
- float Angajat::getSalariu()
- {
- return salariu;
- }
- void Angajat::setSalariu(float s)
- {
- salariu=s;
- }
- Angajat::~Angajat ()
- {
- delete []nume;
- }
- class Administrator:public Angajat
- {
- int sectie;
- public:
- Administrator();
- Administrator( char*, float, int );
- Administrator(Administrator& );
- Administrator& operator = (const Administrator&);
- virtual void display(ostream &);
- friend ostream& operator<<(ostream &, Administrator );
- friend istream& operator>>(istream &, Administrator&);
- ~Administrator() {};
- };
- Administrator::Administrator():Angajat()
- {
- sectie=0;
- }
- Administrator::Administrator( char *n, float sal, int s):Angajat(n, sal)
- {
- sectie=s;
- }
- Administrator::Administrator(Administrator &r):Angajat(r)
- {
- sectie=r.sectie;
- }
- ostream& operator<<(ostream &o, Administrator a)
- {
- a.display(o);
- return o;
- }
- istream& operator>>(istream &i, Administrator &a)
- {
- Angajat *p=&a;
- cin>>*p;
- i>>a.sectie;
- return i;
- }
- void Administrator::display(ostream &o)
- {
- Angajat::display(o);
- o<<"\tSECTIE:"<<sectie;
- }
- Administrator& Administrator:: operator=(const Administrator &a)
- {
- if (this!=&a)
- {
- Angajat::operator=(a);
- this->sectie=a.sectie;
- }
- return *this;
- }
- int main()
- {
- Angajat **v=NULL;
- int i, n;
- cout<<"Cate persoane doriti sa adaugati?\n";
- cin>>n;
- int c;
- v=new Angajat*[n];
- for (i=0; i<n; i++)
- {
- cout<<"Daca doriti sa introduceti un Angajat, tastati 1.\nPentru Administrator, tastati 2.\n";
- cin>>c;
- if (c==1)
- {
- v[i]=new Angajat;
- cin>>*v[i];
- }
- else
- if (c==2)
- {
- v[i]=new Administrator;
- cin>>*dynamic_cast<Administrator*>(v[i]);
- }
- }
- for (i=0; i<n; i++)
- { cout<<i+1<<". ";
- v[i]->display(cout);
- cout<<"\n";
- }
- for (i=0;i<n;i++)
- delete v[i];
- delete[] v;
- return 0;
- }
Add Comment
Please, Sign In to add comment