【问题描述】 描述坐标点结构体Point,有成员x, y。现平面上两个点分别为(x1, y1) (x2, y2) ,请利用结构体计算输出曼哈顿距离和直线距离: 曼哈顿距离 :MHTDistance(struct Point pt1,struct Point pt2 )的描述为: |x1 - x2 | + | y1 -y2| 直线距离:TrueDistance(struct Point pt1,struct Point pt2 )的描述略 【输入形式】输入两个点坐标: 【输出形式】两个距离 【样例输入】 1,2 8,11 【样例输出】 MHTDistance=16.00 TrueDistanc=11.40 【样例说明】保留两位小数点
时间: 2024-01-05 10:02:28 浏览: 85
通过坐标计算两点距离
以下是C++代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
struct Point {
double x;
double y;
};
// 计算曼哈顿距离
double MHTDistance(Point pt1, Point pt2) {
return fabs(pt1.x - pt2.x) + fabs(pt1.y - pt2.y);
}
// 计算直线距离
double TrueDistance(Point pt1, Point pt2) {
return sqrt(pow(pt1.x - pt2.x, 2) + pow(pt1.y - pt2.y, 2));
}
int main() {
Point pt1, pt2;
char c;
cin >> pt1.x >> c >> pt1.y >> pt2.x >> c >> pt2.y;
double mht = MHTDistance(pt1, pt2);
double trueDis = TrueDistance(pt1, pt2);
printf("MHTDistance=%.2f TrueDistance=%.2f", mht, trueDis);
return 0;
}
```
输入格式为 x1,y1 x2,y2,其中 x1,y1,x2,y2 都是实数,用逗号隔开。输出格式为 MHTDistance=xx.xx TrueDistance=xx.xx。其中 MHTDistance 表示曼哈顿距离,TrueDistance 表示直线距离,两个距离的值都保留两位小数。
阅读全文