【问题标题】:C++ class question to set point in class PLEASE [closed]C ++类问题在类中设置点请[关闭]
【发布时间】:2021-06-15 23:31:00
【问题描述】:
  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 参数,返回一个float类型的值代表两个的距离 点。
  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;
};

【问题讨论】:

  • 为什么你不能这样做?你知道什么是默认构造函数吗?实际上看起来你已经做了 10)
  • “我不知道第 10 步、第 11 步和第 12 步该怎么做。” - 但是,你已经做到了,不是吗?这段代码有什么问题?
  • 我上传的在线判断是一个错误的答案。
  • “错误答案”不足以解释您的代码有什么问题
  • @d901203:你想解决什么问题?当然,在线评委不会测试您的班级功能。你的主要功能应该做什么?正如我在回答中所说,考虑将浮点数更改为双精度数

标签: c++ class point segment


【解决方案1】:

您已经实现了 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));
}

此函数不是 const 正确的。你应该把它设为常量。我会这样写:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多