C++判断两圆关系(用Circle和Point类)
2019-04-22 19:14
183 查看
C++判断两圆关系(用Circle和Point类)
构造函数不是Circle(int cx, int cy, int r)而是Circle(Point pc,float r)时
#include<iostream> #include<cmath> using namespace std; const double PI=3.14; class Point{ public: Point(int x=0,int y=0); Point(Point &p); ~Point(); friend class Circle; private: int x,y; }; Point::Point(int x0,int y0):x(x0),y(y0){ cout<<"point构造函数"<<endl; } Point::Point(Point &p):x(p.x),y(p.y){ cout<<"point复制构造函数"<<endl; } Point::~Point(){} class Circle{ public: Circle(Point p,float r=0); Circle(Circle &c); ~Circle(); int getX(){ return pc.x; } int getY(){ return pc.y; } void showCount(); double getArea(); friend void judge(Circle cb,Circle ce); private: Point pc; float r; static int count; }; Circle::Circle(Point p,float r):pc(p),r(r){count++;} double Circle::getArea() { return PI*r*r; } Circle::Circle(Circle &c):pc(c.pc),r(c.r){ count++; cout<<"circle复制构造函数"<<endl; } Circle::~Circle(){ } void Circle::showCount() { cout<<count<<endl; } int Circle::count =0; void judge(Circle cb,Circle ce){ double dis=sqrt((ce.getX()-cb.getX())*(ce.getX()-cb.getX())+(ce.getY()-cb.getY())*(ce.getY()-cb.getY())); float t; if(cb.r>ce.r){ t=cb.r; cb.r=ce.r; ce.r=t; } if(dis>cb.r+ce.r){ cout<<"相离"<<endl; }else if(dis<ce.r-cb.r){ cout<<"包含"<<endl; }else if(dis==ce.r+cb.r){ cout<<dis<<endl<<"外切"<<endl; }else if(dis==ce.r-cb.r){ cout<<"内切"<<endl; }else{ cout<<"相交"<<endl; } } int main(){ int xa,ya,xb,yb; float ra,rb; cout<<"输入第一个圆:坐标x,y和半径r"<<endl; cin>>xa>>ya>>ra; Point pb(xa,ya); Circle c1(pb,ra); cout<<"输入第二个圆:坐标x,y和半径r"<<endl; cin>>xb>>yb>>rb; Point pe(xb,yb); Circle c2(pe,rb); cout<<"圆C1面积为:"<<c1.getArea()<<endl; cout<<"圆C2面积为:"<<c2.getArea()<<endl; cout<<"两圆关系为:"<<endl; judge(c1,c2); cout<<endl; c2.showCount() ; return 0; }
相关文章推荐
- C++判断两条直线位置关系
- 通过C++实现判断点与多边形的关系和两点之间的距离
- 第十周C++【任务3】建立一个Point(点)类,派生出一个Circle(圆)类,派生出一个Cylinder(圆柱体)类
- Java作业-判断两圆关系
- 判断两圆的位置关系
- C++判断两个序列的包含关系: std::includes
- C++ 基类 派生类 互相转换 调用关系
- c++中类的定义与头文件的关系
- Broken line - SGU 124(判断点与多边形的关系)
- VC++开发GIS系统(284)判断面元素之间的拓扑关系
- C++判断是否是纯数字
- C++判断一个数是否为素数
- 关系的性质判断(自反,对称,传递)
- C++第2次上机实验--模拟ATM机;计算两点间距离;判断是否超重
- C++零碎:输入输出+Sleep挂起+utf-8字节数判断+静态成员变量+字符串结束符+链表+文件输入输出+改栈空间
- C++中类与对象的关系
- C++ 如何一次性获取用户输入并判断是否为数字?
- C++ opencv数学方法判断点是否在三角形内
- C++继承体系中Is a 关系 和has a关系
- Immediate Decodability(C++ Stl -----substr判断前缀)