c++(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法; (2)定义一个圆形类,其属性包括圆心和半径; (3)创建两个圆形对象,提示用户输入圆心坐标和半径,判断两个圆是否相交,并输出结果。
时间: 2024-09-12 22:16:43 浏览: 34
在C++中,首先定义一个表示点的类`Point`,该类包含两个坐标属性`x`和`y`,以及一个计算两个点之间距离的方法。然后定义一个表示圆形的类`Circle`,它包含一个点类型的属性表示圆心和一个浮点数属性表示半径。接着通过用户输入创建两个圆形对象,并判断这两个圆是否相交。
以下是具体的实现代码示例:
```cpp
#include <iostream>
#include <cmath>
// 定义点类
class Point {
public:
double x, y;
Point(double x = 0, double y = 0) : x(x), y(y) {}
// 计算两个点之间的距离
static double distance(const Point& p1, const Point& p2) {
return std::sqrt(std::pow(p2.x - p1.x, 2) + std::pow(p2.y - p1.y, 2));
}
};
// 定义圆形类
class Circle {
public:
Point center; // 圆心
double radius; // 半径
Circle(Point center, double radius) : center(center), radius(radius) {}
// 判断两个圆是否相交
bool intersect(const Circle& other) const {
return Point::distance(center, other.center) <= (radius + other.radius);
}
};
int main() {
double x1, y1, x2, y2, r1, r2;
// 用户输入第一个圆的信息
std::cout << "请输入第一个圆的圆心坐标 (x y): ";
std::cin >> x1 >> y1;
std::cout << "请输入第一个圆的半径: ";
std::cin >> r1;
Circle circle1(Point(x1, y1), r1);
// 用户输入第二个圆的信息
std::cout << "请输入第二个圆的圆心坐标 (x y): ";
std::cin >> x2 >> y2;
std::cout << "请输入第二个圆的半径: ";
std::cin >> r2;
Circle circle2(Point(x2, y2), r2);
// 判断并输出两个圆是否相交的结果
if (circle1.intersect(circle2)) {
std::cout << "这两个圆相交。" << std::endl;
} else {
std::cout << "这两个圆不相交。" << std::endl;
}
return 0;
}
```
注意,判断两个圆是否相交的条件是两个圆心之间的距离小于或等于两圆半径之和。