Advertisement
Guest User

Untitled

a guest
May 29th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. class data
  6. {
  7. int zi;
  8. int luna;
  9. int an;
  10. public:
  11. data(int zi, int luna, int an) : zi(zi), luna(luna), an(an) {}
  12. void afisare()
  13. {
  14. cout<<zi<<"."<<luna<<"."<<an;
  15. }
  16. };
  17.  
  18. class angajat
  19. {
  20. private:
  21. string nume, prenume;
  22. int tip_contract;
  23. int tip_activitate; //1=TESA 2=lucrativ
  24. data data_contract;
  25.  
  26. public:
  27. angajat(string nume, string prenume, int tip_contract, int tip_activitate, int zi, int luna, int an)
  28. : nume(nume), prenume(prenume), tip_contract(tip_contract), tip_activitate(tip_activitate), data_contract(data_contract){}
  29.  
  30. data getData()
  31. {
  32. return data_contract;
  33. }
  34. string getNume()
  35. {
  36. return nume;
  37. }
  38. string getPrenume()
  39. {
  40. return prenume;
  41. }
  42. int getTip_contract()
  43. {
  44. return tip_contract;
  45. }
  46. int getTip_activitate()
  47. {
  48. return tip_activitate;
  49. }
  50.  
  51. virtual void afisare()=0;
  52. };
  53.  
  54. class permanent : public angajat
  55. {
  56. int prima_fixa;
  57. public:
  58. permanent(string nume, string prenume, int tip_contract, int tip_activitate, int zi, int luna, int an, int prima_fixa)
  59. : angajat(nume, prenume, tip_contract, tip_activitate, zi, luna, an), prima_fixa(prima_fixa) {}
  60. int getPrima_fixa()
  61. {
  62. return prima_fixa;
  63. }
  64. };
  65.  
  66. class TESA : public permanent
  67. {
  68. int nr_weekend;
  69. public:
  70. TESA(string nume, string prenume, int tip_contract, int tip_activitate, int zi, int luna, int an, int prima_fixa, int nr_weekend)
  71. :permanent(nume, prenume, tip_contract, tip_activitate, zi, luna, an, prima_fixa), nr_weekend(nr_weekend) {}
  72.  
  73. void afisare()
  74. {
  75. cout<<getNume()<<" "<<getPrenume()<<"contract permanent";
  76. getData().afisare();
  77. cout<<"TESA"<<" "<<"weekend: "<<nr_weekend<<", "<<"prima: "<<getPrima_fixa()<<" RON";
  78. }
  79. };
  80.  
  81. class lucrativ : public permanent
  82. {
  83. int spor;
  84. int nr_copii;
  85. int vechime;
  86. public:
  87. 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)
  88. :permanent(nume, prenume, tip_contract, tip_activitate, zi, luna, an, prima_fixa), nr_copii(nr_copii), vechime(vechime)
  89. {
  90.  
  91. if(an==2014)
  92. {
  93. vechime=0;
  94. }
  95. else vechime=2014-an;
  96.  
  97. prima_fixa=(vechime/100)*nr_copii;
  98. }
  99.  
  100. void afisare()
  101. {
  102. cout<<getNume()<<" "<<getPrenume()<<"contract permanent";
  103. getData().afisare();
  104. cout<<"lucrativ"<<" "<<"minori: "<<nr_copii<<", "<<"prima: "<<getPrima_fixa()<<" RON";
  105. }
  106. };
  107.  
  108. class colaborativ : public angajat
  109. {
  110. int prima;
  111. data data_terminare;
  112. public:
  113. 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)
  114. : angajat(nume, prenume, tip_contract, tip_activitate, zi, luna, an), data_terminare(zi_terminare, luna_terminare, an_terminare)
  115. {
  116.  
  117. if(an_terminare==2014) prima=prima/2;
  118.  
  119. }
  120. void afisare()
  121. {
  122. cout<<getNume()<<" "<<getPrenume()<<"plata cu ora";
  123. getData().afisare();
  124. cout<<"-";
  125. data_terminare.afisare();
  126. cout<<" prima: "<<prima<<" RON";
  127. }
  128.  
  129. };
  130.  
  131. int main()
  132. {
  133. vector<angajat*> ang;
  134.  
  135. int i, n;
  136. int prima_fixa;
  137. string nume,prenume;
  138. int tip_contract,tip_activitate,zi,luna,an,nr_weekend;
  139. cin>>prima_fixa;
  140. cin>>n;
  141. for(i=1; i<=n; i++)
  142. {
  143. cin>>tip_contract; //plata cu ora = 2 permanent = 1
  144. if(tip_contract==1)
  145. {
  146. cin>>tip_activitate; //tesa- 1 lucra - 2
  147. if(tip_activitate==1)
  148. {
  149. cin>>nume>>prenume>>zi>>luna>>an>>nr_weekend;
  150. TESA *x=new TESA(nume,prenume,tip_contract,tip_activitate,zi,luna,an, prima_fixa, nr_weekend);
  151. ang.push_back(x);
  152. }
  153.  
  154. }
  155. }
  156.  
  157. for(i=0; i<ang.size(); i++) ang[i]->afisare();
  158.  
  159. return 0;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement