图中红色为提问题目,有哪位大佬会用c++写,谢谢了

 

第二题代码如下:

#include <iostream>
#include <cmath>
using namespace std;

class Shape {
public:
    virtual double getArea() = 0;
};

class Triangle : public Shape {
private:
    double a, b, c;
public:
    Triangle(double _a, double _b, double _c) : a(_a), b(_b), c(_c) {}
    double getArea() {
        double p = (a + b + c) / 2;
        return sqrt(p * (p - a) * (p - b) * (p - c));
    }
};

class Square : public Shape {
private:
    double side;
public:
    Square(double _side) : side(_side) {}
    double getArea() {
        return side * side;
    }
};

class Circle : public Shape {
private:
    double radius;
public:
    Circle(double _radius) : radius(_radius) {}
    double getArea() {
        return M_PI * radius * radius;
    }
};

int main() {
    Shape *s1 = new Triangle(3, 4, 5);
    Shape *s2 = new Square(2);
    Shape *s3 = new Circle(1);

    cout << "三角形面积:" << s1->getArea() << endl;
    cout << "正方形面积:" << s2->getArea() << endl;
    cout << "圆形面积:" << s3->getArea() << endl;

    delete s1;
    delete s2;
    delete s3;

    return 0;
}