实现一个名为Circle的圆类,并规定其数据成员float*radius为指向半径 值的指针。以 Point类的对象指针作为另一个数据成员,表示圆心位置。 定义一个判别两圆位置关系(相交/外离/内含/内切/外切)的函数。用c++实现
时间: 2024-02-26 15:57:22 浏览: 13
好的,以下是 C++ 实现的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Point {
public:
float x, y;
Point(float x, float y) : x(x), y(y) {}
};
class Circle {
public:
float* radius;
Point* center;
Circle(float* radius, Point* center) : radius(radius), center(center) {}
};
// 计算两点之间的距离
float distance(Point* p1, Point* p2) {
return sqrt(pow(p1->x - p2->x, 2) + pow(p1->y - p2->y, 2));
}
// 判断两个圆的位置关系
string circle_relation(Circle* c1, Circle* c2) {
float d = distance(c1->center, c2->center); // 两圆心之间的距离
float r1 = *(c1->radius), r2 = *(c2->radius); // 两圆的半径
if (d < abs(r1 - r2)) {
return "内含";
} else if (d == abs(r1 - r2)) {
return "内切";
} else if (d < r1 + r2) {
return "相交";
} else if (d == r1 + r2) {
return "外切";
} else {
return "外离";
}
}
int main() {
float r1 = 2.0, r2 = 1.0;
Point* p1 = new Point(0.0, 0.0);
Point* p2 = new Point(3.0, 0.0);
Circle* c1 = new Circle(&r1, p1);
Circle* c2 = new Circle(&r2, p2);
string relation = circle_relation(c1, c2);
cout << relation << endl;
delete p1;
delete p2;
delete c1;
delete c2;
return 0;
}
```
定义了一个 `Point` 类表示点,一个 `Circle` 类表示圆。`Circle` 类包含一个 `float` 类型的指针 `radius` 和一个 `Point` 类型的指针 `center`,表示圆的半径和圆心位置。
`circle_relation` 函数用于判断两个圆的位置关系,接受两个 `Circle` 类的指针作为参数,返回值为字符串类型。在函数内部,通过 `distance` 函数计算两圆心之间的距离,然后分别判断两圆的位置关系。
在 `main` 函数中,创建两个圆 `c1` 和 `c2`,并调用 `circle_relation` 函数计算它们的位置关系。最后记得释放动态分配的内存。