作业帮 > 综合 > 作业

下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/03/29 20:25:26
下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状
的图形面积总和的函数.请从shape类派生三角形类(triangle)、矩形类(rectangle)、并给出具体的求面积函数.
class shape
{
public:
virtual float area( )=0
};
float total(shape *s[ ],int n)
{
float sum=0.0;
for(int i=0;iarea( );
return sum;
}
#include
#include
using namespace std;
class Rectangle:public Shape
{
float x1,x2,y1,y2;
public:
Rectangle(float argx1=0,float argy1=0,float argx2=0,float argy2=0);
float getArea();
};
Rectangle::Rectangle(float argx1,float argy1,float argx2,float argy2)
{
x1=argx1;y1=argy1;x2=argx2;y2=argy2;
}
float Rectangle::getArea()
{
float length,width;
length=x1>x2 x1-x2 :x2-x1;
width=y1>y2 y1-y2 :y2-y1;
return length*width;
}
class Triangle:public Shape
{
float x1,x2,y1,y2,x3,y3;
public:
Triangle(float argx1=0,float argy1=0,float argx2=0,float argy2=0,float argx3=0,float argy3=0);
float getArea();
};
Triangle::Triangle(float argx1,float argy1,float argx2,float argy2,float argx3,float argy3)
{
x1=argx1;y1=argy1;x2=argx2;y2=argy2;x3=argx3;y3=argy3;
}
float Triangle::getArea()
{
float a,b,c,s;
//分别求三边
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
s=(a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c)); //海伦公式求三角形面积
}