#include
class CShape
{
public:
virtual float Area()=0;
virtual void SetData(float f1,float f2)=0;
};
class CTriangle:public CShape
{
public:
CTriangle(float h=0,float w=0)
{H=h;W=w;}
float Area()
{return(float)(H*W*0.5); }
void SetData(float f1, float f2)
{ H=f1;W=f2; }
private:
float H,W;
};
class CRect:public CShape
{
public:
CRect(float h=0,float w=0)
{H=h;W=w; }
float Area()
{ return(float)(H*W);}
void SetData(float f1,float f2)
{ H=f1;W=f2; }
private:
float H,W;
};
class CCircle:public CShape
{
public:
CCircle(float r=0)
{R=r; }
float Area()
{return(float)(3.14159265*R*R);}
void SetData(float r,float)
{ R=r;}
private:
float R;
};
class CArea
{
public:
CArea(float triWidth,float triHeight,float rcWidth,float rcHeight,float r)
{
ppShape=new CShape*[3];
ppShape[0]=new CTriangle(triWidth,triHeight);
ppShape[1]=new CRect(rcWidth,rcHeight);
ppShape[2]=new CCircle(r);
}
~CArea()
{
for(int i=0;i2)||(nSetData(f1,f2);
}
void CalAndPrint(void)
{
float fSum=0.0;
char* str[3]={"三角","矩", "圆"};
for(int i=0;iArea();
cout<<str<<"形面积是:"<<area<<endl;
fSum+=area;
}
cout<<"总面积是:"<<fSum<<endl;
}
private:
CShape **ppShape;
};
void mian()
{
CArea a(10,20,6,8,6.5);
a.CalAndPrint();
a.SetShapeData(0,20,30);
a.CalAndPrint();
a.SetShapeData(2,11);
a.CalAndPrint();
a.SetShapeData(1,2,5);
a.CalAndPrint();
}
是不是还有错误,还是保存有误呢?请上传运行结果,谢谢!
|