Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. //dest copyCons assign=
  4. //Oguzhan Ozdemir 21200463
  5. /*Personal Name: Ahmet
  6. Personal Number: 1001
  7. Personal Number of Days: 20
  8. Personal Daily Pay: 175
  9. Personal Type: Salesman
  10. Personal Salary: 3500
  11. _______________
  12. Personal Name: Ayse
  13. Personal Number: 1002
  14. Personal Number of Days: 22
  15. Personal Daily Pay: 200
  16. Personal Type: Technician
  17. Personal Salary: 4400
  18. _______________
  19. Personal Name: Deniz
  20. Personal Number: 1004
  21. Personal Number of Days: 20
  22. Personal Daily Pay: 250
  23. Personal Type: General Manager
  24. Personal Salary: 6000
  25. Manager Salary: 6000
  26. _______________
  27. _______________
  28. Company Needs to pay :13900 TL in total...
  29.  
  30.  
  31.  
  32. C:\Users\21200463\source\repos\Project5\Debug\Project5.exe (process 11080) exited with code 0.
  33. Press any key to close this window . . .
  34. */
  35.  
  36. class Personnel {
  37. char *name;
  38. int persNo;
  39.  
  40.  
  41. public:
  42. explicit Personnel(const char *name);
  43. Personnel(Personnel&);//copy
  44. virtual ~Personnel();//dest
  45. Personnel& operator=(const Personnel&);//assign overload
  46. virtual void out(); //cout
  47. int getTotal(); //returns the total number of objects in the memory
  48. virtual int getSalary() = 0;
  49. };
  50. int totalObj = 0;
  51.  
  52. Personnel::Personnel(const char * name)
  53. {
  54. this->name = new char[strlen(name) + 1];
  55. strcpy(this->name, name);
  56. persNo = 1000+ getTotal();
  57. }
  58.  
  59. Personnel::Personnel(Personnel & f)
  60. {
  61. if (name != nullptr) {
  62. delete[] name;
  63. }
  64. name = new char[strlen(f.name) + 1];
  65. strcpy(name, f.name);
  66. persNo = f.persNo;
  67. }
  68.  
  69. Personnel::~Personnel()
  70. {
  71. if (name != nullptr) {
  72. delete[] name;
  73. }
  74. }
  75.  
  76. Personnel & Personnel::operator=(const Personnel & right)
  77. {
  78. // TODO: insert return statement here
  79. if (&right != this) {
  80. persNo = right.persNo;
  81. if (name != NULL)
  82. delete[]name;
  83. name = new char[strlen(right.name) + 1];
  84. strcpy(name, right.name);
  85. persNo = right.persNo;
  86. return *this;
  87. }
  88. }
  89.  
  90. void Personnel::out()
  91. {
  92. cout << "Personal Name: " << name << endl;
  93. cout << "Personal Number: " << persNo << endl;
  94. }
  95.  
  96. int Personnel::getTotal()
  97. {
  98. totalObj++;
  99. return totalObj;
  100. }
  101.  
  102.  
  103.  
  104. class Worker: public Personnel {
  105. int numDays;
  106. int dailyPay;
  107. char *type;
  108.  
  109. public:
  110. explicit Worker(const char *name_, int numDays_, int dailyPay_, const char *type_) :Personnel(name_) {
  111. numDays = numDays_;
  112. dailyPay = dailyPay_;
  113. this->type = new char[strlen(name_) + 1];
  114. strcpy(this->type, type_);
  115.  
  116. };
  117. int getSalary() {
  118. return numDays * dailyPay;
  119.  
  120. }
  121. void out() {
  122. Personnel::out(); //????????????????????
  123. cout << "Personal Number of Days: " << numDays << endl;
  124. cout << "Personal Daily Pay: " << dailyPay << endl;
  125. cout << "Personal Type: " << type << endl;
  126. cout << "Personal Salary: " << getSalary() << endl;
  127.  
  128.  
  129. }
  130.  
  131. };
  132.  
  133. class Manager : public Personnel, public Worker {
  134. int premium;
  135. int numDaysForManager;
  136. int dailyPayForManager;
  137.  
  138. public:
  139. explicit Manager(const char *name__, int numDays__, int dailyPay__, const char *type__, int premium__) :Worker(name__, numDays__, dailyPay__, type__),Personnel(name__){
  140. premium = premium__;
  141. numDaysForManager = numDays__;
  142. dailyPayForManager = dailyPay__;
  143.  
  144.  
  145.  
  146.  
  147. };
  148.  
  149. int getSalary() {
  150. return (numDaysForManager * dailyPayForManager) +premium;
  151.  
  152. }
  153.  
  154. void out() {
  155. Worker::out(); //????????????????????
  156. cout << "Manager Salary: " << getSalary() << endl;
  157.  
  158.  
  159. }
  160. };
  161.  
  162. void main() {
  163.  
  164. Worker w1("Ahmet", 20, 175, "Salesman");
  165. Worker w2("Ayse", 22, 200, "Technician");
  166. Manager m("Deniz", 20, 250, "General Manager", 1000);
  167.  
  168. /*w1.out();
  169. cout << "_______________\n";
  170. w2.out();
  171. cout << "_______________\n";
  172. m.out();
  173. cout << "_______________\n";*/
  174.  
  175. Personnel *p[3];
  176. p[0] = &w1;
  177. p[1] = &w2;
  178. p[2] = &m;
  179. int whatToPay = 0;
  180. for (int i = 0; i < 3; i++)
  181. {
  182. p[i]->out();
  183. cout << "_______________\n";
  184. whatToPay+= p[i]->getSalary();
  185. }
  186.  
  187. cout << "_______________\n";
  188. cout << "Company Needs to pay :" << whatToPay << " TL in total...\n\n\n";
  189.  
  190.  
  191.  
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement