Guest User

Untitled

a guest
Nov 24th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4.  
  5. class Angajat
  6. {
  7. char * nume;
  8. float salariu;
  9. public:
  10. Angajat();
  11. Angajat(char *, float );
  12. Angajat(Angajat& );
  13. virtual void display(ostream&);
  14. friend ostream& operator<<(ostream&, Angajat );
  15. friend istream& operator>>(istream&, Angajat&);
  16. Angajat& operator=(const Angajat& );
  17. float getSalariu();
  18. void setSalariu(float);
  19. virtual ~Angajat();
  20. };
  21.  
  22. Angajat::Angajat()
  23. {
  24. salariu=0;
  25. nume=NULL;
  26. }
  27. Angajat::Angajat(char *n, float sal)
  28. {
  29. nume = new char (strlen(n)+1);
  30. strcpy(nume, n);
  31. salariu = sal;
  32. }
  33. Angajat::Angajat (Angajat& r)
  34. {
  35. nume = new char (strlen(r.nume)+1);
  36. strcpy(nume, r.nume);
  37. salariu=r.salariu;
  38. }
  39. void Angajat::display(ostream &o)
  40. {
  41. o<<"NUME:"<<nume<<"\tSALARIU:"<<salariu;
  42. }
  43. ostream& operator<<(ostream &o, Angajat a)
  44. {
  45. a.display(o); o<<"\n";
  46. return o;
  47. }
  48.  
  49. istream& operator>>(istream &i, Angajat &a)
  50. {
  51. unsigned int j;
  52. string aux;
  53. cin>>aux;
  54. delete []a.nume;
  55. a.nume = new char [aux.size() +1 ];
  56. for (j=0; j<aux.size(); j++)
  57. a.nume[j]=aux[j];
  58. a.nume[aux.size()]=0;
  59. i>>a.salariu;
  60. return i;
  61. }
  62.  
  63. Angajat& Angajat::operator=(const Angajat &a)
  64. {
  65. if (this!=&a)
  66. {
  67. delete []nume;
  68. nume = new char[strlen(a.nume)+1];
  69. strcpy(nume,a.nume);
  70. salariu=a.salariu;
  71. }
  72. return *this;
  73. }
  74.  
  75. float Angajat::getSalariu()
  76. {
  77. return salariu;
  78. }
  79. void Angajat::setSalariu(float s)
  80. {
  81. salariu=s;
  82. }
  83. Angajat::~Angajat ()
  84. {
  85. delete []nume;
  86. }
  87.  
  88. class Administrator:public Angajat
  89. {
  90. int sectie;
  91. public:
  92. Administrator();
  93. Administrator( char*, float, int );
  94. Administrator(Administrator& );
  95. Administrator& operator = (const Administrator&);
  96. virtual void display(ostream &);
  97. friend ostream& operator<<(ostream &, Administrator );
  98. friend istream& operator>>(istream &, Administrator&);
  99. ~Administrator() {};
  100. };
  101.  
  102. Administrator::Administrator():Angajat()
  103. {
  104. sectie=0;
  105. }
  106. Administrator::Administrator( char *n, float sal, int s):Angajat(n, sal)
  107. {
  108. sectie=s;
  109. }
  110. Administrator::Administrator(Administrator &r):Angajat(r)
  111. {
  112. sectie=r.sectie;
  113. }
  114. ostream& operator<<(ostream &o, Administrator a)
  115. {
  116. a.display(o);
  117. return o;
  118. }
  119. istream& operator>>(istream &i, Administrator &a)
  120. {
  121. Angajat *p=&a;
  122. cin>>*p;
  123. i>>a.sectie;
  124. return i;
  125. }
  126. void Administrator::display(ostream &o)
  127. {
  128. Angajat::display(o);
  129. o<<"\tSECTIE:"<<sectie;
  130. }
  131. Administrator& Administrator:: operator=(const Administrator &a)
  132. {
  133. if (this!=&a)
  134. {
  135. Angajat::operator=(a);
  136. this->sectie=a.sectie;
  137. }
  138. return *this;
  139. }
  140.  
  141. int main()
  142. {
  143.  
  144. Angajat **v=NULL;
  145. int i, n;
  146. cout<<"Cate persoane doriti sa adaugati?\n";
  147. cin>>n;
  148. int c;
  149. v=new Angajat*[n];
  150.  
  151. for (i=0; i<n; i++)
  152. {
  153. cout<<"Daca doriti sa introduceti un Angajat, tastati 1.\nPentru Administrator, tastati 2.\n";
  154. cin>>c;
  155. if (c==1)
  156. {
  157. v[i]=new Angajat;
  158. cin>>*v[i];
  159. }
  160. else
  161. if (c==2)
  162. {
  163. v[i]=new Administrator;
  164. cin>>*dynamic_cast<Administrator*>(v[i]);
  165. }
  166.  
  167. }
  168.  
  169. for (i=0; i<n; i++)
  170. { cout<<i+1<<". ";
  171. v[i]->display(cout);
  172. cout<<"\n";
  173. }
  174. for (i=0;i<n;i++)
  175. delete v[i];
  176. delete[] v;
  177.  
  178. return 0;
  179. }
Add Comment
Please, Sign In to add comment