float getLength(); //无参数,返回段的长度。
第10、11、12步不知道怎么做。 这是我的代码。 我需要有人教我,谢谢!!!
#include <math.h>
class Point
{
public:
Point()
{
x = y = 0;
}
Point(float x1, float y1)
{
x = x1;
y = y1;
}
void setX(float X)
{
x = X;
}
float getX()
{
return x;
}
void setY(float Y)
{
y = Y;
}
float getY()
{
return y;
}
void printPoint()
{
std::cout << "(" << x << ", " << y << ")";
}
float getDistance(Point p2)
{
return sqrt(pow(getX() - p2.getX(), 2) + pow(getY() - p2.getY(), 2));
}
private:
float x;
float y;
};
class Segment : public Point
{
public:
Segment()
{
point1 = {};
point2 = {};
}
Segment(Point pt1, Point pt2)
{
point1 = pt1;
point2 = pt2;
}
float getLength()
{
return sqrt(pow(point1.getX() - point2.getX(), 2) + pow(point1.getY() - point2.getY(), 2));
}
private:
Point point1;
Point point2;
};
答案 0 :(得分:2)
您已经实施了 10、11 和 12。
Segment()
{
point1 = {};
point2 = {};
}
Segment(Point pt1, Point pt2)
{
point1 = pt1;
point2 = pt2;
}
这是 10 和 11 的实现。不过我会使用构造函数初始化列表进行初始化:
Segment() = default;
Segment(const Point& pt1, const Point& pt2)
:point1(pt1), point2(pt2)
{
}
12 在这里实现:
float getLength()
{
return sqrt(pow(point1.getX() - point2.getX(), 2) + pow(point1.getY() - point2.getY(), 2));
}
这个函数不是常量正确的。你应该让它成为常量。我会这样写:
float getLength() const
{
const float dx = point1.getX() - point2.getX();
const float dy = point1.getY() - point2.getY();
return sqrt(dx*dx + dy*dy);
}
如果自动检查软件(例如 ejudge)出现错误,请考虑将 float 更改为 double,因为错误答案很可能是由于缺乏所需的精度