早教吧作业答案频道 -->其他-->
定义一个具有多态性的基类Shape,继承以下一些类:圆Circle类(坐标点和半径构成)长方形Rectangle3.定义一个具有多态性的基类Shape,继承以下一些类:圆Circle类(坐标点和半径构成),长方形Rect
题目详情
定义一个具有多态性的基类Shape,继承以下一些类:圆Circle类(坐标点和半径构成)长方形Rectangle
3.定义一个具有多态性的基类Shape,继承以下一些类:圆Circle类(坐标点和半径构成),长方形Rectangle类(两个不重合的坐标点构成),三角形(Triangle)类(三个互不重合的坐标点构成).编程,按shape.txt文件内容创建各类对象,求其面积.若为圆,则还要输出其半径,(另用GetR函数实现,不是虚函数).
Shape.txt文件说明:
若第一个字符为’C’,则后面为圆数据:x坐标,y坐标,圆半径三个实数;
若第一个字符为’R’,则后面为长方形数据:x1,y1,x2,y2坐标;
若第一个字符为’T’,则后面为三角形数据:x1,y1,x2,y2,x3,y3坐标;
若第一个字符为’X’,表示输入结束.
###要可以运行出来的哦######跪谢~
3.定义一个具有多态性的基类Shape,继承以下一些类:圆Circle类(坐标点和半径构成),长方形Rectangle类(两个不重合的坐标点构成),三角形(Triangle)类(三个互不重合的坐标点构成).编程,按shape.txt文件内容创建各类对象,求其面积.若为圆,则还要输出其半径,(另用GetR函数实现,不是虚函数).
Shape.txt文件说明:
若第一个字符为’C’,则后面为圆数据:x坐标,y坐标,圆半径三个实数;
若第一个字符为’R’,则后面为长方形数据:x1,y1,x2,y2坐标;
若第一个字符为’T’,则后面为三角形数据:x1,y1,x2,y2,x3,y3坐标;
若第一个字符为’X’,表示输入结束.
###要可以运行出来的哦######跪谢~
▼优质解答
答案和解析
#include
#include
#include
#include
#define PI 3.14159
using namespace std;
class Shape
{
public:
virtual float getArea()=0;//纯虚函数
};
class Circle:public Shape
{
float x,y,r;
public:
Circle(float argx=0,float argy=0,float argr=0);
float getArea();
float getR();
};
Circle::Circle(float argx,float argy,float argr)
{
x=argx;y=argy;r=argr;
}
float Circle::getArea()
{
return PI*r*r;
}
float Circle::getR()
{
return r;
}
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)); //海伦公式求三角形面积
}
void main()
{
char shape;
Shape *ps;
float x1,y1,x2,y2,x3,y3,r;
ifstream inf("shape.txt");
if(!inf)
{
couty1>>r;
Circle c(x1,y1,r);
coutx2>>y2>>x3>>y3;
Triangle t(x1,y1,x2,y2,x3,y3);
cout
#include
#include
#include
#define PI 3.14159
using namespace std;
class Shape
{
public:
virtual float getArea()=0;//纯虚函数
};
class Circle:public Shape
{
float x,y,r;
public:
Circle(float argx=0,float argy=0,float argr=0);
float getArea();
float getR();
};
Circle::Circle(float argx,float argy,float argr)
{
x=argx;y=argy;r=argr;
}
float Circle::getArea()
{
return PI*r*r;
}
float Circle::getR()
{
return r;
}
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)); //海伦公式求三角形面积
}
void main()
{
char shape;
Shape *ps;
float x1,y1,x2,y2,x3,y3,r;
ifstream inf("shape.txt");
if(!inf)
{
couty1>>r;
Circle c(x1,y1,r);
coutx2>>y2>>x3>>y3;
Triangle t(x1,y1,x2,y2,x3,y3);
cout
看了 定义一个具有多态性的基类Sh...的网友还看了以下:
关于氢键对熔沸点的影响同一物质的同分异构体比如邻硝基苯酚和对硝基苯酚,形成分子内氢键的熔沸点高还是 2020-05-17 …
英语翻译现代平面设计的思想和形式基础主要源于“构成主义”、“风格派”和“包豪斯”这三个现代主义设计 2020-06-09 …
果蝇的体色有灰身和黑身、翅形有长翅和残翅、眼色有红眼和白眼之分,三对相对性状分别受等位基因B和b、 2020-07-03 …
在芽的发育过程中,能再次形成新芽的一组结构是()A.叶原基和芽原基B.生长点和芽原基C.生长点和叶 2020-07-08 …
下图是某昆虫基因pen突变产生抗药性示意图。下列相关叙述正确的是杀虫剂与靶位点结合形成抗药靶位点基因 2020-11-02 …
十八大报告提出,健全基层党组织领导的充满活力的基层群众自治机制,以扩大有序参与、推进信息公开、加强议 2020-11-05 …
(2006•防城港)如图,网络中每个小正方形的边长为1,点C的坐标为(0,1).(1)画出直角坐标系 2020-11-13 …
简述唯物注意的基本观点和它的历史形态、唯心主义的基本观点和它的基本形式.如题.简述就好. 2020-11-26 …
汉字有着深厚的文化底蕴,有着独特的文化魅力。看下面几个篆体汉字,从例字以外的三个字中任选两个,仿照例 2020-11-28 …
类比、转化、分类讨论等思想方法和数学基本图形在数学学习和解题中经常用到,如下是一个案例,请补充完整. 2020-11-29 …