#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-17 15:04:26 浏览: 141
#include"iostream.h"
3星 · 编辑精心推荐
这是一个 C++ 程序,实现了判断两个圆是否相交或相切。程序中定义了两个类,分别是 coord 类和 circle 类。
coord 类表示坐标点,有两个私有成员变量 coord_x 和 coord_y,分别表示横坐标和纵坐标。类中包含一个构造函数和一个析构函数,还有一个公有成员函数 set_coord,用于设置坐标点的横纵坐标。此外,类中还有一个公有成员函数 distance,用于计算两个坐标点之间的距离。
circle 类表示圆,有三个私有成员变量 r、c_x 和 c_y,分别表示圆的半径、圆心的横坐标和纵坐标。类中包含一个构造函数和一个析构函数,还有一个公有成员函数 set_circle,用于设置圆的半径和圆心的横纵坐标。此外,类中还有一个公有成员函数 if_intersect,用于判断两个圆是否相交或相切。
在 main 函数中,先输入圆1和圆2的半径和圆心坐标,然后创建两个 circle 类的对象 c1 和 c2,并调用它们的 set_circle 函数设置半径和圆心坐标。最后调用 c1 的 if_intersect 函数,判断两个圆是否相交或相切。
阅读全文