-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAssignment-21.cpp
120 lines (113 loc) · 2.37 KB
/
Assignment-21.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include<iostream>
using namespace std;
class Employee
{
protected:
double Basic_Pay;
public:
Employee()
{
}
Employee(double a)
{
Basic_Pay=a;
}
virtual void print_details()
{
}
};
class ProjectManager:public Employee
{
double AGP, DA, TA, HRA;
public:
ProjectManager(double a):Employee(a)
{
}
double compute_salary()
{
AGP=0.2*Basic_Pay;
DA=0.4*Basic_Pay;
TA=5000;
HRA=20000;
return (AGP + DA + TA + HRA + Basic_Pay);
}
void print_details()
{
double TOTAL;
TOTAL=compute_salary();
cout<<"Type: "<<"Project Manager "<<"BP "<<Basic_Pay<<" AGP "<<AGP<<" DA "<<DA<<" TA "<<TA<<" HRA "<<HRA;
cout<<" TOTAL "<<TOTAL<<endl;
}
};
class System_Engineer:public Employee
{
double TA, HRA;
public:
System_Engineer(double a):Employee(a)
{
}
double compute_salary()
{
TA=5000;
HRA=20000;
return (TA + HRA + Basic_Pay);
}
void print_details()
{
double TOTAL;
TOTAL=compute_salary();
cout<<"Type: "<<"System Engineer "<<" BP"<<Basic_Pay<<" TA "<<TA<<" HRA "<<HRA;
cout<<" TOTAL "<<TOTAL<<endl;
}
};
class Technical_Assistant:public Employee
{
double TA;
public:
Technical_Assistant(double a):Employee(a)
{
}
double computesalary()
{
TA=5000;
return (TA + Basic_Pay);
}
void print_details()
{
double TOTAL;
TOTAL=computesalary();
cout<<"Type: "<<"Technical Assistant "<<"BP "<<Basic_Pay<<" TA "<<TA;
cout<<" TOTAL "<<TOTAL<<endl;
}
};
int main()
{
int n;
cin>>n;
Employee *e;
for(int i=0;i<n;i++)
{
double pay;
string etype;
cin>>etype>>pay;
if(etype=="PM")
{
ProjectManager pm(pay);
e=±
e->print_details();
}
else if(etype=="SE")
{
System_Engineer se(pay);
e=&se;
e->print_details();
}
else
{
Technical_Assistant ta(pay);
e=&ta;
e->print_details();
}
}
return 0;
}