一定平面二维点类Point,线段类Line是由两个Point点组成的组合类 (30 分)

一定平面二维点类Point,线段类Line是由两个Point点组成的组合类 (30 分)
定义平面二维点类Point,(有x,y坐标,构造函数、复制构造函数,输出函数)。
线段类Line是由两个Point点组成的组合类
(数据成员: 两个端点,线段长度; 函数成员:构造函数、复制构造函数、计算线段长度函数)
//主函数
int main()
{
int x1,y1,x2,y2;
cin>>x1>>y1;
cin>>x2>>y2;
Point myp1(x1,y1),myp2(x2,y2); //建立Point类的对象
Line L1(myp1,myp2); //建立Line类的对象
cout<<"Line start Point is:"; L1.GetPstart().print();
cout<<endl;
cout<<"Line end Point is:"; L1.GetPend().print();
cout<<endl;
cout<<"Length of Line is:"<<L1.GetLen()<<endl;
}
输入格式:
输入两行,第一行为线段的起点坐标(中间已空格隔开),第二行为线段的终点坐标 (中间已空格隔开)
输出格式:
输入各个函数被调用过程主程序,需要填写。
输入样例:
在这里给出一组输入。例如:
0 0
3 4
输出样例:
在这里给出相应的输出。例如:
create Point:P(0,0)
create Point:P(3,4)
Create a new Line:
Line start Point is:P(0,0)
Line end Point is:P(3,4)
Length of Line is:5


#include<iostream>
using namespace std;
class Point
{//(有x,y坐标,构造函数、复制构造函数,输出函数)。
    friend class Line;
private:
    int x, y;
public:
    Point(int x1, int x2)
    {
        this->x = x1;
        this->y = x2;
        cout << "create Point:P" << "(" << this->x << "," << this->y << ")" << endl;
    }
    Point(Point& p)
    {
        this->x = p.x; this->y = p.y;
    }
    //输出函数
    void print()
    {
        cout << "P" << "(" << this->x << "," << this->y << ")";
    }
};
class Line
{
private:
    Point p1;
    Point p2;
public:
    Line(Point& p1, Point& p2) :p1(p1), p2(p2) 
    {
        cout << "Create a new Line:" << endl;
    }
    Point GetPstart()
    {
        return this->p1;
    }
    Point GetPend()
    {
        return this->p2;
    }
    double GetLen()
    {
        return sqrt((this->p1.x - this->p2.x) * (this->p1.x - this->p2.x) +
            (this->p1.y - this->p2.y) * (this->p1.y - this->p2.y));
    }
};
int main()
{
    int x1, y1, x2, y2;
    cin >> x1 >> y1;cin >> x2 >> y2;
    Point myp1(x1, y1), myp2(x2, y2); //建立Point类的对象
    
    Line L1(myp1, myp2); //建立Line类的对象
    cout << "Line start Point is:"; L1.GetPstart().print();
    cout << endl;
    cout << "Line end Point is:"; L1.GetPend().print();
    cout << endl;
    cout << "Length of Line is:" << L1.GetLen() << endl;
}

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 点类Point)是一个表示二维平面,它包含两个私有成员变量x和y,别表示的横坐标和纵坐标点类还包含一些公有成员函数,用于获取和设置坐标,计算两之间的距离等操作。例如: class Point { private: double x; // 横坐标 double y; // 纵坐标 public: Point(); // 默认构造函数 Point(double x, double y); // 带参构造函数 double getX() const; // 获取横坐标 double getY() const; // 获取纵坐标 void setX(double x); // 设置横坐标 void setY(double y); // 设置纵坐标 double distance(const Point& p) const; // 计算两之间的距离 }; 其中,构造函数用于初始化坐标,getX和getY函数用于获取坐标,setX和setY函数用于设置坐标,distance函数用于计算两之间的距离。在实现distance函数时,可以使用勾股定理计算两之间的距离: double Point::distance(const Point& p) const { double dx = x - p.x; double dy = y - p.y; return sqrt(dx * dx + dy * dy); } 这样,我们就可以使用点类来表示二维平面上的,并进行一些常见的操作,如计算两之间的距离等。 ### 回答2: 二维平面上的一个位置,它有两个坐标别是x和y。因此,设计一个表示二维平面point,需要包含以下成员变量和成员函数: 1. 成员变量:x, y,别表示坐标, 2. 成员函数构造函数和析构函数。其中,构造函数可以重载多个版本,以便于用户选择不同的方式进行初始化,如没有参数、有一个参数或者有两个参数的构造函数。析构函数用于释放point所占用的资源,一般情况下不需要特殊定义, 3. 成员函数:getX()和getY(),用于获得坐标值。setX()和setY(),用于设置坐标值。print()函数用于输出坐标值, 根据上述要求,point的框架如下: class point{ private: double x, y; public: point();//无参构造函数 point(double x, double y);//有参构造函数 point(double a[]);//初始化坐标数组 double getX();//获取x坐标 double getY();//获取y坐标 void setX(double x);//设置x坐标 void setY(double y);//设置y坐标 void print();//输出坐标 ~point();//析构函数 }; 接下来,我们别对这些成员变量和成员函数进行详细介绍: 成员变量: private: double x, y; 成员变量包含在中,是为了方便存储和操作数据。这里定义两个坐标x和y,并将它们声明为private型,即私有的成员变量。这种方式可以避免无意中对成员变量进行误操作。 构造函数point();//无参构造函数 point(double x, double y);//有参构造函数 point(double a[]);//初始化坐标数组 构造函数是用来创建对象并初始化对象的,与同名。在point中,我们需要定义多条构造函数,以便于用户选择不同的方式对进行初始化。 无参构造函数point(),用于创建一个空的,即x和y坐标都是0。 有参构造函数point(double x, double y),用于用给定的坐标值创建一个。 初始化坐标数组:point(double a[]),用于将一个包含两个元素的数组作为参数,用这个数组初始化坐标。 getX()和getY(): double getX();//获取x坐标 double getY();//获取y坐标 getX()和getY()函数别用于获取的x坐标和y坐标。它们都是基本访问函数,因此在声明中加上const修饰符。 setX()和setY(): void setX(double x);//设置x坐标 void setY(double y);//设置y坐标 setX()和setY()函数别用于设置的x坐标和y坐标,用于更改坐标值。这两个函数都不需要返回值,它们都是修改成员变量的值。 print()函数: void print();//输出坐标 print()函数用于输出坐标值,可以用来查看坐标值。它可以通过cout函数输出,也可以将坐标值存储在字符串中。 析构函数: ~point();//析构函数 析构函数是用来清理对象并释放对象所占用资源的函数。在point中,一般情况下不需要特殊定义析构函数,因为point并不涉及动态内存配。如果中包含了指针型的成员变量,那么析构函数就需要删除这些指针所指向的动态内存。 ### 回答3: point是一个表示二维平面上具有x坐标和y坐标。该应该包含以下数据成员成员函数数据成员: 1. x坐标(double型) 2. y坐标(double 型) 成员函数: 1. 构造函数point应该至少有两个构造函数,用于初始化x坐标和y坐标,一个不带任何参数的默认构造函数,另一个带有两个参数用于初始化x和y坐标。 2. 复制构造函数:用于复制另一个point对象。 3. get_x()和get_y():用于获取的x坐标和y坐标。 4. set_x(double x)和set_y(double y):用于设置的x坐标和y坐标。 5. distance_to(const point& p):用于计算当前与另一个p之间的距离。通过计算勾股定理得到两个的距离。 6. to_string():用于将该转换为字符串形式,例如"(x, y)"。 在这个point中,我们可以定义一些运算符重载函数。例如: 1. “+”运算符重载:使用该运算符,可以实现两个point对象相加的操作,返回一个新的point对象,其x和y坐标都是其中两个坐标之和。 2. “-”运算符重载:使用该运算符,可以实现两个point对象相减的操作,返回一个新的point对象,其x和y坐标都是其中两个坐标之差。 3. “<<”运算符重载:使用该运算符,可以实现将point对象的x和y坐标以字符串形式输出。 这些成员函数数据成员足以完成point的设计,可以方便地表示二维平面上的,并对这些进行一些基本的运算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值