#include<bits/stdc++.h>
using namespace std;
class shape
{
public:
shape()
{
cout<<"shape constructed"<<endl;
}
virtual double getarea()
{
return 0;
}
virtual ~shape()
{
cout<< "shape destroyed"<<endl;
}
};
class circle:public shape
{
int rad;
public:
circle(int r)
{
rad=r;
cout<< "circle constructed"<<endl;
}
double getarea()
{
double ar=3.14*rad*rad;
//cout<< "circle area: "<<ar<<endl;
return ar;
}
~circle()
{
cout<< "circle destroyed"<<endl;
}
};
class rect:public shape
{
int b,h;
public:
rect(int bs,int ht)
{
b=bs;
h=ht;
cout<< "rectangle constructed"<<endl;
}
double getarea()
{
double ar=b*h;
//cout<< "rect area: "<<ar<<endl;
return ar;
}
~rect()
{
cout<< "rectangle destroyed"<<endl;
}
};
int main()
{
int r;
cout<< "radius: ";
cin>>r;
shape *s1=new circle(r);
int a,b;
cout<< "base and height: ";
cin>>a>>b;
shape *s2=new rect(a,b);
cout<<"rect: "<< s2->getarea()<<endl;
cout<< "circle: "<<s1->getarea()<<endl;
delete s1;
delete s2;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIHNoYXBlCnsKcHVibGljOgogICAgc2hhcGUoKQogICAgewogICAgICAgIGNvdXQ8PCJzaGFwZSBjb25zdHJ1Y3RlZCI8PGVuZGw7CiAgICB9CiAgICB2aXJ0dWFsIGRvdWJsZSBnZXRhcmVhKCkKICAgIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIHZpcnR1YWwgfnNoYXBlKCkKICAgIHsKICAgICAgICBjb3V0PDwgInNoYXBlIGRlc3Ryb3llZCI8PGVuZGw7CiAgICB9Cn07CgpjbGFzcyBjaXJjbGU6cHVibGljIHNoYXBlCnsKICAgIGludCByYWQ7CnB1YmxpYzoKICAgIGNpcmNsZShpbnQgcikKICAgIHsKICAgICAgICByYWQ9cjsKICAgICAgICBjb3V0PDwgImNpcmNsZSBjb25zdHJ1Y3RlZCI8PGVuZGw7CiAgICB9CiAgICBkb3VibGUgZ2V0YXJlYSgpCiAgICB7CiAgICAgICAgZG91YmxlIGFyPTMuMTQqcmFkKnJhZDsKICAgICAgICAvL2NvdXQ8PCAiY2lyY2xlIGFyZWE6ICI8PGFyPDxlbmRsOwogICAgICAgIHJldHVybiBhcjsKICAgIH0KICAgIH5jaXJjbGUoKQogICAgewogICAgICAgIGNvdXQ8PCAiY2lyY2xlIGRlc3Ryb3llZCI8PGVuZGw7CiAgICB9Cn07CgpjbGFzcyByZWN0OnB1YmxpYyBzaGFwZQp7CiAgICBpbnQgYixoOwpwdWJsaWM6CiAgICByZWN0KGludCBicyxpbnQgaHQpCiAgICB7CiAgICAgICAgYj1iczsKICAgICAgICBoPWh0OwogICAgICAgIGNvdXQ8PCAicmVjdGFuZ2xlIGNvbnN0cnVjdGVkIjw8ZW5kbDsKICAgIH0KICAgIGRvdWJsZSBnZXRhcmVhKCkKICAgIHsKICAgICAgICBkb3VibGUgYXI9YipoOwogICAgICAgIC8vY291dDw8ICJyZWN0IGFyZWE6ICI8PGFyPDxlbmRsOwogICAgICAgIHJldHVybiBhcjsKICAgIH0KICAgIH5yZWN0KCkKICAgIHsKICAgICAgICBjb3V0PDwgInJlY3RhbmdsZSBkZXN0cm95ZWQiPDxlbmRsOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBpbnQgcjsKICAgIGNvdXQ8PCAicmFkaXVzOiAiOwogICAgY2luPj5yOwoKICAgIHNoYXBlICpzMT1uZXcgY2lyY2xlKHIpOwoKICAgIGludCBhLGI7CiAgICBjb3V0PDwgImJhc2UgYW5kIGhlaWdodDogIjsKICAgIGNpbj4+YT4+YjsKICAgIHNoYXBlICpzMj1uZXcgcmVjdChhLGIpOwoKICAgY291dDw8InJlY3Q6ICI8PCBzMi0+Z2V0YXJlYSgpPDxlbmRsOwogICBjb3V0PDwgImNpcmNsZTogIjw8czEtPmdldGFyZWEoKTw8ZW5kbDsKICAgIGRlbGV0ZSBzMTsKCgogICAgZGVsZXRlIHMyOwoKCn0K