请结合需求设计一个结构体描述坐标点Point,有成员x, y,表示其坐标。现平面上两个点分别为(x1, y1) (x2, y2) ,其中 x1, y1, x2, y2设为整数。请设计函数计算: 1、曼哈顿距离 MHTDistance的定义为: |x1 - x2 | + | y1 -y2| 2、两点之间的直线距离float TrueDistance(struct Point pt1,struct Point pt2 ) 【输入形式】输入两个点坐标: 【输出形式】 【样例输入】 1,2 8,11 【样例输出】 MHTDistance=16.00 TrueDistanc=11.40
时间: 2023-07-16 20:13:39 浏览: 96
根据需求,可以设计如下的结构体描述坐标点Point:
```c++
struct Point {
int x;
int y;
};
```
接下来,我们可以设计函数计算曼哈顿距离MHTDistance和两点之间的直线距离TrueDistance:
```c++
#include <cmath>
// 计算曼哈顿距离
int MHTDistance(Point pt1, Point pt2) {
return abs(pt1.x - pt2.x) + abs(pt1.y - pt2.y);
}
// 计算两点之间的直线距离
float TrueDistance(Point pt1, Point pt2) {
int dx = pt1.x - pt2.x;
int dy = pt1.y - pt2.y;
return sqrt(dx * dx + dy * dy);
}
```
最后,我们可以使用以下代码进行输入输出:
```c++
#include <iostream>
#include <sstream>
using namespace std;
int main() {
// 读入输入
string input;
getline(cin, input);
istringstream iss(input);
int x1, y1, x2, y2;
char comma;
iss >> x1 >> comma >> y1 >> x2 >> comma >> y2;
// 计算曼哈顿距离和直线距离
Point pt1 = {x1, y1};
Point pt2 = {x2, y2};
float true_dist = TrueDistance(pt1, pt2);
int mht_dist = MHTDistance(pt1, pt2);
// 输出结果
printf("MHTDistance=%.2f TrueDistance=%.2f\n", (float)mht_dist, true_dist);
return 0;
}
```
输入样例:
```
1,2 8,11
```
输出样例:
```
MHTDistance=16.00 TrueDistance=11.40
```
阅读全文