计划建造一个溜冰场,溜冰场为圆形或者矩形,已知,每平米溜冰场造价35元,溜冰场周围的栏杆每米造价20元。编写函数用于计算不同大小圆形和矩形溜冰场的造价。
实现方法:
(1)定义一个shape抽象类,shape抽象类中有:
面积Area( )和周长Primeter( )的纯虚函数
表示shape平面位置坐标的成员变量X,Y
(2)shape抽象类派生出Rectangle类和Circle类,计算各派生类对象的面积Area( )和周长Primeter( ).
(3)定义函数double cost(shape &s)用于计算圆形溜冰场或者矩形溜冰场的造价。
#include <iostream>
using namespace std;
#define PI 3.1415926
class shape
{
protected:
int x,y;
public:
virtual double Area() = 0;
virtual double Primeter() = 0;
};
class Rectangle : public shape
{
protected:
int x0,y0;
public:
Rectangle(int x1,int y1,int x2,int y2) {x=x1;y=y1;x0=x2;y0=y2;}
double Area() {return (x-x0)*(y-y0);}
double Primeter() {return 2*((x-x0)+(y-y0));}
};
class Circle :public shape
{
protected:
double r;
public:
Circle(int x1,int y1,double r1) {x=x1;y=y1;r=r1;};
double Area() {return PI*r*r;}
double Primeter() {return 2*PI*r;}
};
double cost(shape &s)
{
return 35*s.Area() + 20*s.Primeter();
}
int main()
{
Rectangle r1(1,2,10,20);
Circle c1(1,2,10);
printf("%.2f\n",cost(r1));
printf("%.2f\n",cost(c1));
return 0;
}