求c++ 师傅来搞定。。。 分不多,而且好像东西挺多。。。 抱歉。。

设计一个几何图形类及其派生类。几何图形类GeometricShape是一个抽象类,它有三个派生类,分别是矩形类Rectangle、圆形类Circle和三角形类Triang... 设计一个几何图形类及其派生类。几何图形类GeometricShape是一个抽象类,它有三个派生类,分别是矩形类Rectangle、圆形类Circle和三角形类Triangle,在你认为适当的类中设计成员变量和成员函数,达到如下要求:
1) 成员变量包括矩形的长和宽、圆的半径、三角形的三个边长。
2) 成员函数包括
(1) who_am_I(),返回图形名称(矩形、圆形、三角形);
(2) checkIntegrity(),判断输入的有效性,是否为0到1024之间的整数或小数,返回true或false;
(3) getCircumference(),返回图形周长;
(4) getArea(),返回图形面积;
(5) IsTriangle(),根据三条线段的长度判断这三条线段能否组成三角形,返回true或false;
(6) print(),返回形如“长为3宽为2的长方形,周长为10,面积为6”的字符串。
3) 使用构造函数对类的成员变量进行初始化,矩形类Rectangle的构造函数参数为矩形的长和宽,圆形类Circle的构造函数参数为圆的半径,三角形类Triangle的构造函数参数为三角形的三个边长。
4) 撰写main()函数,验证类中的成员函数。
展开
 我来答
wssznh1999
推荐于2016-07-22 · TA获得超过428个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:367万
展开全部
#include<iostream>
#include <math.h>
using namespace std;
#define PI 3.1415926
class GeometricShape
{
public:
virtual float getArea() = 0;
virtual float getCircumference() = 0;
virtual void print() = 0;
bool checkIntegrity(float num)
{
if(num > 0 && num < 1024)
return true;
return false;
}
};
class Rectangle : public GeometricShape
{
private:
float length;
float wide;
public:
Rectangle(float l, float w)
{
if(checkIntegrity(l))
length = l;
else
cout << "输入无效!!" << endl;
if(checkIntegrity(w))
wide = w;
else
cout << "输入无效!!" << endl;
}
void setLength(float l)
{
if(checkIntegrity(l))
length = l;
else
cout << "输入无效!!" << endl;
}
float getLength()
{
return length;

}
void setWide(float w)
{
if(checkIntegrity(w))
wide = w;
else
cout << "输入无效!!" << endl;
}
float getWide()
{
return wide;
}
float getArea()
{
return length * wide;
}
float getCircumference()
{
return 2 * (length + wide);
}

void who_am_i()
{
cout << "矩形" << endl;
}

void print()
{
cout << "长为:" << length << "宽为:"
<< wide << "的长方形,周长为:"
<< getCircumference() << ",面积为:"
<< getArea() << endl;
}
};
class Triangle : public GeometricShape
{
private:
float side[3];
public:
Triangle(float s1, float s2, float s3)
{
if(checkIntegrity(s1))
side[0] = s1;
else
cout << "输入无效!!" << endl;
if(checkIntegrity(s2))
side[1] = s2;
else
cout << "输入无效!!" << endl;
if(checkIntegrity(s3))
side[2] = s3;
else
cout << "输入无效!!" << endl;
}
void setSide1(float s)
{
if(checkIntegrity(s))
side[0] = s;
else
cout << "输入无效!!" << endl;
}
float getSede1()
{
return side[0];

}
void setSide2(float s)
{
if(checkIntegrity(s))
side[1] = s;
else
cout << "输入无效!!" << endl;
}
float getSede2()
{
return side[1];

}
void setSide3(float s)
{
if(checkIntegrity(s))
side[2] = s;
else
cout << "输入无效!!" << endl;
}
float getSede3()
{
return side[2];

}
float getArea()
{
float p = (side[0] + side[1] + side[2])/2;
p = p * (p - side[0]) * (p - side[1]) * (p - side[2]);
return sqrt(p);
}
float getCircumference()
{
return side[0] + side[1] + side[2];
}

bool IsTriangle()
{
if(side[0] + side[1] > side[2]
&& side[0] + side[2] > side[1]
&& side[1] + side[2] > side[0])
return true;
return false;
}

void who_am_i()
{
cout << "三角形" << endl;
}

void print()
{
cout << "边长分别为:" << side[0] << ","
<< side[1] << "," << side[2] << "的三角形,周长为:"
<< getCircumference() << ",面积为:"
<< getArea() << endl;
}
};

class Circle : public GeometricShape
{
private:
float radius;
public:
Circle(float r)
{
if(checkIntegrity(r))
radius = r;
else
cout << "输入无效!!" << endl;
}
void setRadius(float r)
{
if(checkIntegrity(r))
radius = r;
else
cout << "输入无效!!" << endl;
}
float getRadius()
{
return radius;

}
float getArea()
{
return PI * radius * radius;
}
float getCircumference()
{
return 2 * radius *PI;
}

void who_am_i()
{
cout << "圆形" << endl;
}

void print()
{
cout << "半径为:" << radius << "的圆形,周长为:"
<< getCircumference() << ",面积为:"
<< getArea() << endl;
}
};

int main()
{
Rectangle rec(4, 5);
Circle cir(3);
Triangle tri(3, 4, 5);
if(tri.IsTriangle())
cout << "这三条线段能组成三角形:" << endl;
cout << "我是:" ;
tri.who_am_i();
tri.print();
cout << "我是:" ;
rec.who_am_i();
rec.print();
cout << "我是:" ;
cir.who_am_i();
cir.print();
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式