C++ 课堂问题请在课堂上设置点

时间:2021-03-18 14:33:57

标签: c++ class point segment

<块引用>
  1. 请设计一个类 Point 表示平面坐标上的一个点。
  2. 给这个类两个私有数据成员 x 和 y 代表 点的位置,x 和 y 是浮点型。
  3. 创建一个默认构造函数,将 x 和 y 设置为 0。
  4. 创建一个带有两个浮点参数的构造函数来设置 x 和 y。
  5. 创建一个公共函数成员printPoint以显示为格式 像“(x,y)”
  6. 创建公共函数成员 getX、setX、getY、setY 来访问 数据成员 x 和 y。
  7. 创建一个具有一种 Point 类型的公共函数成员 getDistance 参数,返回一个浮点型值表示两个的距离 点。
  8. 请设计一个类 Segment 表示平面上的一个段 坐标。
  9. 给这个类两个私有数据成员point1和point2表示 此段的端点。
  10. 创建一个默认构造函数,将两个端点设置为 (0, 0)。
  11. 创建一个带有两个 Point 对象作为参数的构造函数来设置两个 端点。
  12. 实现以下函数成员

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;
};

1 个答案:

答案 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,因为错误答案很可能是由于缺乏所需的精度