永发信息网

是一个circle类程序

答案:1  悬赏:20  手机版
解决时间 2021-05-02 06:07
是一个circle类程序


最佳答案

根据题意实现代码如下:#include <iostream>
#include <cmath>
#include <string>
using namespace std;
const double PI = 3.14159265358979323846;
class Circle{
public:
Circle():x(0),y(0),r(1){};
Circle(double ix, double iy, double ir):x(ix), y(iy), r(ir){};
double area(){return PI*r*r;}
double perimeter(){return 2*PI*r;}
int relation(Circle &c);
void show();
private:
double x, y, r;
};
int Circle::relation(Circle &c){
double d = sqrt((x - c.x) * (x - c.x) + (y - c.y) * (y - c.y));
if(d > r + c.r)
return -1;
else if(d == r + c.r || d == fabs(r-c.r))
return 1; //相切
else if(d < r + c.r && d > fabs(r - c.r))
return 2; //相交
else
return 3;
}
void Circle::show(){
cout << "圆心为(" << x << ", " << y << "),半径为" << r;
}

class TestCircle{
public:
void run();
void AddCircle(Circle c, int i){p[i] = c;}
private:
Circle p[2];
void testRelation(Circle &m, Circle &n);
void testArea(Circle &c);
void testPerimeter(Circle &c);
};
void TestCircle::run(){
testArea(p[0]);
testPerimeter(p[0]);
testArea(p[1]);
testPerimeter(p[1]);
testRelation(p[0],p[1]);
}
void TestCircle::testRelation(Circle &m, Circle &n){
int s = m.relation(n);
string t = "相离";
if(s == 1){
t = "相切";
}
else if(s == 2){
t = "相交";
}
else if(s == 3){
t = "相容";
}
m.show();
cout << "和";
n.show();
cout << ",两圆" << t << endl;
}
void TestCircle::testArea(Circle &c){
c.show();
cout << ",该圆面积为:" << c.area() << endl;
}
void TestCircle::testPerimeter(Circle &c){
c.show();
cout << ",该圆周长为:" << c.perimeter() << endl;
}
int main(){
double x,y,r;
TestCircle test;
cout << "please input x y r of circle 1:" << endl;
cin >> x >> y >> r;
test.AddCircle(Circle(x,y,r), 0);
cout << "please input x y r of circle 2:" << endl;
cin >> x >> y >> r;
test.AddCircle(Circle(x,y,r), 1);
test.run();
return 0;
}如果感觉还行,还请尽快采纳.

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
360下载的Dx9怎么用?
求购protel图
大森林串吧我想知道这个在什么地方
怎么变成的蓝钻?
被狗狗咬了,破了一点点表皮,有一点血印,但
我要创建家簇
.cn和.com 域名一年多少钱?再加50兆空间
中国是否能够称霸太平洋 将美国赶出亚太?
什么是人生经历
山水M105
工作时间失神
工作以外我们可以做什么
pps恶作剧之吻炎亚纶出现在第几集
当太阳直射南回归线时,北半球为什么季?
皮肤出粉刺
推荐资讯
晋宁昆阳胡子副食店在哪里啊,我有事要去这个
聊斋最短的故事有哪些?
快男4进3的比赛你们希望谁和谁PK?希望结果如
长城电影经典台词,在电影长城中黄轩说了什么
用什么祛斑最有效
旧币里怎么分二罗?三罗?还有冠字是什么?
远古1套好做么?DNF
桐柏县司法局朱庄司法所在哪里啊,我有事要去
天宝隆旅馆在什么地方啊,我要过去处理事情
算虾解冻后的损耗
qqt2P怎么上墙,要视频的...
大货车晚上坏车停路边,路人出事怎样处理
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?