题目描述
设计一个平面点类Point,具有以下属性:
横坐标,纵坐标;
具有以下成员函数:
(1)构造函数
(2)显示函数:以“(x,y)”的形式输出点坐标
(3)求两个点的L1范数距离的函数(坐标差的绝对值之和)
输入描述
输入为两行,每行是一个点的坐标(用空格间隔)
输出描述
输出有三行,前两行是两个点的坐标,第三行是L1范数距离(注意换行):
输入样例
1 2
2 1
输出样例
(1, 2)
(2, 1)
2
#include <iostream>
#include <cmath>
using namespace std;
class Point{
private:
int x, y;
public:
Point(){
x = 0;
y = 0;
};
Point(int new_x, int new_y){
x = new_x;
y = new_y;
};
void show(){
cout << "(" << x <<", " << y << ")" << endl;
}
void dist(Point &p){
cout << abs(x - p.x) + abs(y - p.y) << endl; // 求两个点的L1范数距离的函数(坐标差的绝对值之和)
}
};
int main(){
int x, y;
cin >> x >> y;
Point *point1 = new Point(x, y);
cin >> x >> y;
Point *point2 = new Point(x, y);
point1 -> show();
point2 -> show();
point1 -> dist(*point2);
delete point2;
delete point1;
return 0;
}
注:
求两个点的L1范数距离的函数(坐标差的绝对值之和)用到的公式为
引入 #include <cmath>
库可以调用abs()
函数对x1 - x2 和 y1 - y2取绝对值。