(1)已知Calculator类为抽象类,包含两个protected的double类型变量 x与y;
(2)Add类与Mul类均从Calculator类公有派生,分别使用result()函数进行加与乘的运算;
请根据运行结果与main函数将程序补充完整。
请注意第2个操作数为负时的输出形式。
例1(只有第1行为输入):
2.2 3.33
2.2+3.33=5.53
3.33*2.2=7.326
例2(只有第1行为输入):
-2.2 -3.3
-2.2-3.3=-5.5
-3.3*(-2.2)=7.26
#include <iostream>
#include <cmath>
using namespace std;
class Calculator {
protected:
double x, y;
public:
Calculator(double a, double b) : x(a), y(b) {}
virtual double result() const = 0;
};
class Add : public Calculator {
public:
Add(double a, double b) : Calculator(a, b) {}
double result() const {
return x + y;
}
};
class Mul : public Calculator {
public:
Mul(double a, double b) : Calculator(a, b) {}
double result() const {
return x * y;
}
};
int main() {
double x, y;
cin >> x >> y;
Calculator *add = new Add(x, y);
cout << add->result() << endl;
delete add;
Calculator *mul = new Mul(x, y);
cout << mul->result() << endl;
delete mul;
if (y < 0) {
cout << x << " - " << abs(y) << " = " << x - abs(y) << endl;
cout << -x << " * " << abs(y) << " = " << -x * abs(y) << endl;
}
return 0;
}