#include #include #include #define pi 3.14 class Shape { public: virtual double GetArea() const = 0; virtual ~Shape() {} }; class Circle : public Shape { private: double radius; public: Circle(double r) : radius(r) {} double GetArea() const override { return pi * radius * radius; } }; class Rectangle : public Shape { private: double length; double width; public: Rectangle(double l, double w) : length(l), width(w) {} double GetArea() const override { return length * width; } }; class Square : public Rectangle { public: Square(double side) : Rectangle(side, side) {} }; int main() { double radius; std::cin >> radius; Circle* circle = new Circle(radius); std::cout << "The area of the Cirele is:" << circle->GetArea() << std::endl; delete circle; double length, width; std::cin >> length >> width; Rectangle* rectangle = new Rectangle(length, width); std::cout << "The area of the Recanale is:" << rectangle->GetArea() << std::endl; delete rectangle; double side; std::cin >> side; Square* square = new Square(side); std::cout << "The area of the Recanale is:" << square->GetArea() << std::endl; delete square; return 0; }