Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- using namespace std;
- class Employee {
- public:
- Employee(double value = 12792) : mrot(value) {}
- virtual ~Employee() {}
- virtual double salary()const {
- return mrot;
- }
- protected:
- double mrot;
- };
- class Manager : virtual public Employee {
- public:
- Manager(double a, double p) : a(a), p(p) {}
- double salary()const override {
- auto s = mrot * a;
- return s += s * p;
- }
- private:
- double a;
- double p;
- };
- class Administrator : virtual public Employee {
- public:
- Administrator(double a) : a(a) {}
- double salary()const override {
- return mrot * a;
- }
- private:
- double a;
- };
- class Programmer : virtual public Employee {
- public:
- Programmer(double a, double p, double x) : a(a), p(p), x(x) {}
- double salary()const override {
- auto s = mrot * a;
- return s += s * p + s * x;
- }
- private:
- double a;
- double p;
- double x;
- };
- unsigned quantity(const char* msg) {
- cout << msg;
- unsigned value;
- cin >> value;
- cin.ignore(cin.rdbuf()->in_avail());
- return value;
- }
- int main() {
- Manager manager(6.5, 0.25);
- Administrator administrator(4.8);
- Programmer programmer(8.25, 0.15, 0.2);
- auto managers = quantity("Managers: ");
- auto administrators = quantity("Administrators: ");
- auto programmers = quantity("Programmers: ");
- auto budget
- = manager.salary() * managers
- + administrator.salary() * administrators
- + programmer.salary() * programmers;
- cout << "Budget: " << fixed << setprecision(2) << budget << '\n';
- system("pause > nul");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement