#include <iostream>
// Base class for shapes
class Shape {
public :
virtual double calculateArea( ) const = 0 ;
virtual ~Shape( ) = default ;
} ;
// Derived class for Circle
class Circle : public Shape {
private :
double radius;
public :
Circle( double r) : radius( r) { }
double calculateArea( ) const override {
return 3.14159 * radius * radius; // Area of a circle: πr²
}
} ;
// Derived class for Rectangle
class Rectangle : public Shape {
private :
double width, height;
public :
Rectangle( double w, double h) : width( w) , height( h) { }
double calculateArea( ) const override {
return width * height; // Area of a rectangle: w × h
}
} ;
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8gQmFzZSBjbGFzcyBmb3Igc2hhcGVzCmNsYXNzIFNoYXBlIHsKcHVibGljOgogICAgdmlydHVhbCBkb3VibGUgY2FsY3VsYXRlQXJlYSgpIGNvbnN0ID0gMDsKICAgIHZpcnR1YWwgflNoYXBlKCkgPSBkZWZhdWx0Owp9OwoKLy8gRGVyaXZlZCBjbGFzcyBmb3IgQ2lyY2xlCmNsYXNzIENpcmNsZSA6IHB1YmxpYyBTaGFwZSB7CnByaXZhdGU6CiAgICBkb3VibGUgcmFkaXVzOwpwdWJsaWM6CiAgICBDaXJjbGUoZG91YmxlIHIpIDogcmFkaXVzKHIpIHt9CiAgICBkb3VibGUgY2FsY3VsYXRlQXJlYSgpIGNvbnN0IG92ZXJyaWRlIHsKICAgICAgICByZXR1cm4gMy4xNDE1OSAqIHJhZGl1cyAqIHJhZGl1czsgLy8gQXJlYSBvZiBhIGNpcmNsZTogz4BywrIKICAgIH0KfTsKCi8vIERlcml2ZWQgY2xhc3MgZm9yIFJlY3RhbmdsZQpjbGFzcyBSZWN0YW5nbGUgOiBwdWJsaWMgU2hhcGUgewpwcml2YXRlOgogICAgZG91YmxlIHdpZHRoLCBoZWlnaHQ7CnB1YmxpYzoKICAgIFJlY3RhbmdsZShkb3VibGUgdywgZG91YmxlIGgpIDogd2lkdGgodyksIGhlaWdodChoKSB7fQogICAgZG91YmxlIGNhbGN1bGF0ZUFyZWEoKSBjb25zdCBvdmVycmlkZSB7CiAgICAgICAgcmV0dXJuIHdpZHRoICogaGVpZ2h0OyAvLyBBcmVhIG9mIGEgcmVjdGFuZ2xlOiB3IMOXIGgKICAgIH0KfTsK