#include <iostream>
#include <cmath>
using namespace std;
//4.1.
class Figure{
protected:
double x, y;
public:
//4.2.
static int count;
void setDim(double i, double j){
x=i;
y=j;
}
virtual void showArea() = 0;
virtual void showPerimeter() = 0;
};
//4.2.
int Figure::count = 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, 11.0);
pFigure->showArea();
pFigure->showPerimeter();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vNC4xLiAKY2xhc3MgRmlndXJlewoJcHJvdGVjdGVkOgoJZG91YmxlIHgsIHk7CglwdWJsaWM6CgkvLzQuMi4KCXN0YXRpYyBpbnQgY291bnQ7Cgl2b2lkIHNldERpbShkb3VibGUgaSwgZG91YmxlIGopewoJCXg9aTsKCQl5PWo7Cgl9Cgl2aXJ0dWFsIHZvaWQgc2hvd0FyZWEoKSA9IDA7Cgl2aXJ0dWFsIHZvaWQgc2hvd1BlcmltZXRlcigpID0gMDsKfTsKCi8vNC4yLgppbnQgRmlndXJlOjpjb3VudCA9IDA7CgpjbGFzcyBUcmlhbmdsZTogcHVibGljIEZpZ3VyZXsKCXB1YmxpYzoKCXZvaWQgc2hvd0FyZWEoKXsKCQljb3V0IDw8ICJUcmlhbmdsZSBhcmVhOiAiIDw8IDAuNSAqeCp5PDwgZW5kbDsKCX0KCXZvaWQgc2hvd1BlcmltZXRlcigpewoJCWRvdWJsZSB6ID0gc3FydCh4KnggKyB5KnkpOwoJCWNvdXQgPDwgIlRyaWFuZ2xlIHBlcmltZXRlcjogIiA8PCB4K3kreiA8PCBlbmRsOwoJfQp9OwoKY2xhc3MgUmVjdGFuZ2xlOiBwdWJsaWMgRmlndXJlewoJcHVibGljOgoJdm9pZCBzaG93QXJlYSgpewoJCWNvdXQgPDwgIlJlY3RhbmdsZSBhcmVhOiAiIDw8IHgqeTw8IGVuZGw7Cgl9Cgl2b2lkIHNob3dQZXJpbWV0ZXIoKXsKCQljb3V0IDw8ICJSZWN0YW5nbGUgcGVyaW1ldGVyOiAiIDw8IDIqKHgreSkgPDwgZW5kbDsKCX0KfTsKCmNsYXNzIENpcmNsZTogcHVibGljIEZpZ3VyZXsKCXB1YmxpYzoKCXZvaWQgc2hvd0FyZWEoKXsKCQljb3V0IDw8ICJDaXJjbGUgYXJlYTogIiA8PCAzLjE0ICp4Knk8PCBlbmRsOwoJfQoJdm9pZCBzaG93UGVyaW1ldGVyKCl7CgkJY291dCA8PCAiQ2lyY2xlIHBlcmltZXRlcjogIiA8PCAyKiAzLjE0ICogeCA8PCBlbmRsOwoJfQp9OwppbnQgbWFpbigpIHsKCUZpZ3VyZSAqcEZpZ3VyZTsKCVRyaWFuZ2xlIHRyaWFuZ2xlOwoJUmVjdGFuZ2xlIHJlY3RhbmdsZTsKCUNpcmNsZSBjaXJjbGU7CgkKCXBGaWd1cmUgPSAmdHJpYW5nbGU7CglwRmlndXJlLT5zZXREaW0oMTAuMCwgNS4wKTsKCXBGaWd1cmUtPnNob3dBcmVhKCk7CglwRmlndXJlLT5zaG93UGVyaW1ldGVyKCk7CgkKCXBGaWd1cmUgPSAmcmVjdGFuZ2xlOwoJcEZpZ3VyZS0+c2V0RGltKDEwLjAsIDUuMCk7CglwRmlndXJlLT5zaG93QXJlYSgpOwoJcEZpZ3VyZS0+c2hvd1BlcmltZXRlcigpOwoJCglwRmlndXJlID0gJmNpcmNsZTsKCXBGaWd1cmUtPnNldERpbSg1LjAsIDExLjApOwoJcEZpZ3VyZS0+c2hvd0FyZWEoKTsKCXBGaWd1cmUtPnNob3dQZXJpbWV0ZXIoKTsKCXJldHVybiAwOwp9