#include;
using namespace std;
class point {
private:
//二维点的坐标分量 x y
float _x = 0.0;
float _y = 0.0;
public:
float x = _x;
float y = _y;
};
class CShape
{
public:
virtual ~CShape() {};
virtual void AddData(float a) {}; //输入数据
virtual void AddData(point a, point b) {}; //输入数据
virtual float Perimeter() = 0;//求周长
virtual float Area() = 0; //求面积
};
//园
class CC : public CShape
{
private:
float m_radius;
public:
CC() :
m_radius(){}
virtual ~CC() {};
//输入数据
virtual void AddData(float radius)
{
m_radius = radius;
}
//求周长
virtual float Perimeter()
{
return 6.28 * m_radius;
}
//求面积
virtual float Area()
{
return 3.14 * (m_radius * m_radius);
}
};
//矩形
class CR : public CShape
{
public:
point a;
point b;
float m1,m2;
float n1,n2;
float x;
float y;
public:
virtual ~CR() {};
//输入数据
virtual void AddData(point a, point b)
{
a.x = m1;
a.y = n1;
b.x = m2;
b.y = n2;
}
//求周长
virtual float Perimeter()
{
return 2*((b.x - a.x) + (a.y - b.y));
}
//求面积
virtual float Area()
{
return (b.x - a.x) * (a.y - b.y);
}
};
int main()
{
point a;
point b;
float r;
float m1,m2,n1,n2,m3,n3;
cout << "【1】求圆的周长与面积" << endl;
cout << "【2】求矩形的周长与面积" << endl;
cout << "请选择" << endl;
int n;
cin >> n;
if (n == 1)
{
cout << "请输入圆心坐标与半径" << endl;
cin >> m3 >> n3;
cin >> r;
CShape* pCC = new CC();
pCC->AddData(r);
float ccArea = pCC->Area();
float ccPerimeter = pCC->Perimeter();
cout << "圆面积" << endl;
cout << ccArea << endl;
cout << "圆周长" << endl;
cout << ccPerimeter << endl;
}
else if (n == 2)
{
cout << "请输入矩形左上角与右下角坐标" << endl;
cin >> m1 >> n1;
cin >> m2 >> n2;
CShape* pCR = new CR();
pCR->AddData(a, b);
float crArea = pCR->Area();
float crPerimeter = pCR->Perimeter();
cout << "矩形面积" << endl;
cout << crArea << endl;
cout << "矩形周长" << endl;
cout << crPerimeter << endl;
}
else
{
cout << "输入错误" << endl;
}
return 0;
}


virtual void AddData(point a, point b)
{
this->a = a;
this->b = b;
}