试卷思路:
#include<iostream>
using namespace std;
/*class Point;
int hdistance(const Point & first, const Point& second);
int vdistance(const Point & first, const Point& second);*/
class Point
{
public:
Point(int x = 0, int y = 0)//构造函数
{
this->x = x;
this->y = y;
}
friend int hdistance(const Point& first, const Point& second);
friend int vdistance(const Point& first, const Point& second);
private:
int x, y;
};
int hdistance(const Point& first, const Point& second)
{
if (first.x - second.x >= 0)
return first.x - second.x;
else
{
return second.x - first.x;
}
}
int vdistance(const Point& first, const Point& second)
{
if (first.y - second.y >= 0)
return first.y - second.y;
else
{
return second.y - first.y;
}
}
int main()
{
Point a(1, 2);
Point b(3, 5);
cout << hdistance(a, b) << endl;
cout << vdistance(a, b) << endl;
}
清华郑莉老师思路:调用cmath
#include <iostream>
#include <cmath>
using namespace std;
class Point { //Point类声明
public: //外部接口
Point(int x=0, int y=0) : x(x), y(y) { }
int getX() { return x; }
int getY() { return y; }
friend float dist(Point &a, Point &b);
private: //私有数据成员
int x, y;
};
float dist( Point& a, Point& b) {
double x = a.x - b.x;
double y = a.y - b.y;
return static_cast<float>(sqrt(x * x + y * y));
}
int main() {
Point p1(1, 1), p2(4, 5);
cout <<"The distance is: ";
cout << dist(p1, p2) << endl;
return 0;
}