#include "iostream" #include "math.h" using namespace std; class coord{ private: double coord_x; double coord_y; public: coord() { coord_x = coord_y = 0; cout << "调用构造函数coord()" << endl; system("pause"); } ~coord() { cout << "调用析构函数~coord()" << endl; system("pause"); } void set_coord(double x,double y) { coord_x = x; coord_y = y; } double distance(coord &a,coord &b) { return sqrt((a.coord_x-b.coord_x)*(a.coord_x-b.coord_x)+(a.coord_y-b.coord_y)*(a.coord_y-b.coord_y)); } }; class circle{ private: double r; double c_x; double c_y; public: circle() { r=c_x=c_y=0; cout << "调用构造函数circle()" << endl; system("pause"); } ~circle() { cout << "调用析构函数~circle()" << endl; system("pause"); } void set_circle(double x,double y,double R) { if(r<=0) { cout << "error" << endl; exit(0); } r=R; c_x=x; c_y=y; } void if_intersect(circle& c1 , circle& c2) { double dist_1, dist_2; coord o1,o2; o1.set_coord(c1.c_x,c1.c_y); o2.set_coord(c2.c_x,c2.c_y); dist_1 = distance(o1,o2); dist_2 = c1.r + c2.r; if(dist_1<dist_2) cout << "相交" <<endl; else if(dist_1>dist_2) cout << "不相交" <<endl; else cout << "相切" <<endl; } }; int main() { circle c1,c2; double x1,y1,r1,x2,y2,r2; cout << "input the coord and radius of circle1(double) (x,y,r):"; cin >> x1 >> y1 >> r1; c1.set_circle(x1,y1,r1); cout << "input the coord and radius of circle2(double) (x,y,r):"; cin >> x2 >> y2 >> r2; c2.set_circle(x2,y2,r2); if_intersect(c1,c2); return 0; }
时间: 2023-06-16 18:07:34 浏览: 72
#include"iostream.h"
3星 · 编辑精心推荐
这是一个 C++ 的程序,实现了判断两个圆是否相交的功能。程序中定义了两个类,一个是 coord 类,表示坐标点;另一个是 circle 类,表示圆。在 circle 类中,使用了 coord 类来表示圆心坐标,并且实现了判断两个圆是否相交的功能。
程序中使用了构造函数和析构函数来初始化和清理对象。构造函数在创建对象时被调用,析构函数在对象被销毁时被调用。在本程序中,构造函数和析构函数被用来输出调试信息和等待用户按下任意键继续执行程序。
在 main 函数中,首先输入了两个圆的坐标和半径,然后创建了两个 circle 对象,分别表示这两个圆。最后调用 if_intersect 方法来判断这两个圆是否相交。
阅读全文