关于# c++#的问题,如何解决?

(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;
}