#include <iostream>
#include <cmath>
using namespace std;
//4.1.
class Figure{
protected:
double x, y;
public:
void setDim(double i, double j){
x=i;
y=j;
}
virtual void showArea() = 0;
virtual void showPerimeter() = 0;
};
class Triangle: public Figure{
public:
void showArea(){
cout << "Triangle area: " << 0.5 *x*y<< endl;
}
void showPerimeter(){
double z = sqrt(x*x + y*y);
cout << "Triangle perimeter: " << x+y+z << endl;
}
};
class Rectangle: public Figure{
public:
void showArea(){
cout << "Rectangle area: " << x*y<< endl;
}
void showPerimeter(){
cout << "Rectangle perimeter: " << 2*(x+y) << endl;
}
};
class Circle: public Figure{
public:
void showArea(){
cout << "Circle area: " << 3.14 *x*y<< endl;
}
void showPerimeter(){
cout << "Circle perimeter: " << 2* 3.14 * x << endl;
}
};
int main() {
Figure *pFigure;
Triangle triangle;
Rectangle rectangle;
Circle circle;
pFigure = ▵
pFigure->setDim(10.0, 5.0);
pFigure->showArea();
pFigure->showPerimeter();
pFigure = &rectangle;
pFigure->setDim(10.0, 5.0);
pFigure->showArea();
pFigure->showPerimeter();
pFigure = &circle;
pFigure->setDim(5.0);
pFigure->showArea();
pFigure->showPerimeter();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vNC4xLiAKY2xhc3MgRmlndXJlewoJcHJvdGVjdGVkOgoJZG91YmxlIHgsIHk7CglwdWJsaWM6Cgl2b2lkIHNldERpbShkb3VibGUgaSwgZG91YmxlIGopewoJCXg9aTsKCQl5PWo7Cgl9Cgl2aXJ0dWFsIHZvaWQgc2hvd0FyZWEoKSA9IDA7Cgl2aXJ0dWFsIHZvaWQgc2hvd1BlcmltZXRlcigpID0gMDsKfTsKCmNsYXNzIFRyaWFuZ2xlOiBwdWJsaWMgRmlndXJlewoJcHVibGljOgoJdm9pZCBzaG93QXJlYSgpewoJCWNvdXQgPDwgIlRyaWFuZ2xlIGFyZWE6ICIgPDwgMC41ICp4Knk8PCBlbmRsOwoJfQoJdm9pZCBzaG93UGVyaW1ldGVyKCl7CgkJZG91YmxlIHogPSBzcXJ0KHgqeCArIHkqeSk7CgkJY291dCA8PCAiVHJpYW5nbGUgcGVyaW1ldGVyOiAiIDw8IHgreSt6IDw8IGVuZGw7Cgl9Cn07CgpjbGFzcyBSZWN0YW5nbGU6IHB1YmxpYyBGaWd1cmV7CglwdWJsaWM6Cgl2b2lkIHNob3dBcmVhKCl7CgkJY291dCA8PCAiUmVjdGFuZ2xlIGFyZWE6ICIgPDwgeCp5PDwgZW5kbDsKCX0KCXZvaWQgc2hvd1BlcmltZXRlcigpewoJCWNvdXQgPDwgIlJlY3RhbmdsZSBwZXJpbWV0ZXI6ICIgPDwgMiooeCt5KSA8PCBlbmRsOwoJfQp9OwoKY2xhc3MgQ2lyY2xlOiBwdWJsaWMgRmlndXJlewoJcHVibGljOgoJdm9pZCBzaG93QXJlYSgpewoJCWNvdXQgPDwgIkNpcmNsZSBhcmVhOiAiIDw8IDMuMTQgKngqeTw8IGVuZGw7Cgl9Cgl2b2lkIHNob3dQZXJpbWV0ZXIoKXsKCQljb3V0IDw8ICJDaXJjbGUgcGVyaW1ldGVyOiAiIDw8IDIqIDMuMTQgKiB4IDw8IGVuZGw7Cgl9Cn07CmludCBtYWluKCkgewoJRmlndXJlICpwRmlndXJlOwoJVHJpYW5nbGUgdHJpYW5nbGU7CglSZWN0YW5nbGUgcmVjdGFuZ2xlOwoJQ2lyY2xlIGNpcmNsZTsKCQoJcEZpZ3VyZSA9ICZ0cmlhbmdsZTsKCXBGaWd1cmUtPnNldERpbSgxMC4wLCA1LjApOwoJcEZpZ3VyZS0+c2hvd0FyZWEoKTsKCXBGaWd1cmUtPnNob3dQZXJpbWV0ZXIoKTsKCQoJcEZpZ3VyZSA9ICZyZWN0YW5nbGU7CglwRmlndXJlLT5zZXREaW0oMTAuMCwgNS4wKTsKCXBGaWd1cmUtPnNob3dBcmVhKCk7CglwRmlndXJlLT5zaG93UGVyaW1ldGVyKCk7CgkKCXBGaWd1cmUgPSAmY2lyY2xlOwoJcEZpZ3VyZS0+c2V0RGltKDUuMCk7CglwRmlndXJlLT5zaG93QXJlYSgpOwoJcEZpZ3VyZS0+c2hvd1BlcmltZXRlcigpOwoJcmV0dXJuIDA7Cn0=