#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 14:07:33 浏览: 69
这段代码是一个简单的判断两个圆是否相交(或相切)的程序。其中定义了两个类:coord 和 circle。coord 类表示平面上的一个点,它有两个私有成员变量表示横纵坐标,有一个公有成员函数 distance,表示计算该点与另一个点之间的距离。circle 类表示平面上的一个圆,它有三个私有成员变量表示圆心坐标和半径,有两个公有成员函数 set_circle 和 if_intersect,前者用于给圆赋值,后者用于判断两个圆是否相交(或相切)。主函数中创建了两个圆 c1 和 c2,分别根据用户输入的坐标和半径进行赋值,并调用 if_intersect 函数判断它们之间的关系。
相关问题
#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; }
这是一个 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 函数,判断两个圆是否相交或相切。
解释代码#include <iostream> #include <cstdio> #include <cstdlib> #include <ctime> #include <conio.h> #include <cmath> #include <windows.h> using namespace std; HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord;
这段代码使用了一些 C++ 语言中的头文件和函数,具体解释如下:
- `#include <iostream>`:包含了标准输入输出流的库函数,如 `std::cout` 和 `std::cin`。
- `#include <cstdio>`:包含了 C 标准库的输入输出函数,如 `printf()` 和 `scanf()`。
- `#include <cstdlib>`:包含了 C 标准库的通用工具函数,如 `malloc()` 和 `free()`。
- `#include <ctime>`:包含了 C 标准库的时间和日期函数,如 `time()` 和 `asctime()`。
- `#include <conio.h>`:包含了控制台输入输出函数,如 `getch()` 和 `clrscr()`。
- `#include <cmath>`:包含了 C 标准库的数学函数,如 `sin()` 和 `cos()`。
- `#include <windows.h>`:包含了 Windows 系统编程相关的函数和数据类型,如 `HANDLE` 和 `COORD`。
其中,`HANDLE` 类型表示一个操作系统句柄,用于访问系统资源;`COORD` 类型表示控制台屏幕上的坐标。该代码段还定义了一个全局变量 `hout`,用于获取标准输出句柄,并定义了一个函数 `SetColor()`,用于设置控制台输出的文本颜色。
阅读全文