定义一个point类,输入10个点坐标。 计算出两两点之间的最短、最长距离并输出。 计算出10个点的重心坐标。c++
时间: 2024-10-21 09:11:48 浏览: 40
java计算雷达屏幕上两点之间距离的应用
3星 · 编辑精心推荐
在C++中,我们可以定义一个Point类来存储点的坐标,并提供一些必要的方法来计算两点间的距离以及所有点的重心。下面是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
class Point {
public:
double x, y;
// 构造函数
Point(double _x, double _y) : x(_x), y(_y) {}
// 计算两点间距离
double distance(const Point& other) const {
double dx = other.x - x;
double dy = other.y - y;
return std::sqrt(dx * dx + dy * dy);
}
};
int main() {
std::vector<Point> points(10); // 存储10个点
for (size_t i = 0; i < 10; ++i) {
std::cout << "请输入第" << (i+1) << "个点的坐标 (x y): ";
double x, y;
std::cin >> x >> y;
points[i] = Point(x, y);
}
// 计算最大距离和最小距离
double maxDistance = 0.0, minDistance = std::numeric_limits<double>::max();
for (size_t i = 0; i < points.size(); ++i) {
for (size_t j = i + 1; j < points.size(); ++j) {
double dist = points[i].distance(points[j]);
maxDistance = std::max(maxDistance, dist);
minDistance = std::min(minDistance, dist);
}
}
std::cout << "最长距离: " << maxDistance << "\n";
std::cout << "最短距离: " << minDistance << "\n";
// 计算重心坐标
double totalX = 0.0, totalY = 0.0;
for (const auto& point : points) {
totalX += point.x;
totalY += point.y;
}
Point centroid(totalX / points.size(), totalY / points.size());
std::cout << "重心坐标: (" << centroid.x << ", " << centroid.y << ")\n";
return 0;
}
```
在这个程序中,我们首先创建了一个Point类,包含了x和y坐标,并实现了计算两点间距离的方法。然后在main函数中,用户依次输入10个点的坐标,接着计算了所有的点对之间的最短和最长距离,最后求出了所有点的重心。
阅读全文