Problem D: 平面上的点和线——Point类、Line类 (V)

Description

在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定,两点确定一条线段。现在我们封装一个“Point类”和“Line类”来实现平面上的点的操作。
根据“append.cc”,完成Point类和Line类的构造方法和show()方法,输出各Line对象和Point对象的构造和析构次序。
接口描述:
Point::show()方法:按格式输出Point对象。
Line::show()方法:按格式输出Line对象。
Line::SetLine(double, double, double, double)方法:设置Line对象起点的x,y坐标(第一个和第二参数)和终点的x,y坐标(第三个和第四个坐标),并返回本对象
Line::SetLine(const Point &, const Point &)方法:设置Line对象的起点(第一个参数)和终点(第二个坐标),并返回本对象
Line::SetLine(const Line&)方法:设置Line对象,复制参数的坐标,并返回本对象
Line::readLine()方法:从标准输入上读入坐标,格式见Sample

Input

输入的第一行为N,表示后面有N行测试样例。
每行为两组坐标“x,y”,分别表示线段起点和终点的x坐标和y坐标,两组坐标间用一个空格分开,x和y的值都在double数据范围内。

Output

输出为多行,每行为一条线段,起点坐标在前终点坐标在后,每个点的X坐标在前,Y坐标在后,Y坐标前面多输出一个空格,用括号包裹起来。输出格式见sample。
C语言的输入输出被禁用。

Sample Input

40,0 1,11,1 2,32,3 4,50,1 1,0

Sample Output

Point : (1, -2) is created.Point : (2, -1) is created.Point : (0, 0) is created.Point : (0, 0)Point : (0, 0) is created.Point : (0, 0) is created.Line : (0, 0) to (0, 0) is created.Point : (0, 0) is created.Point : (0, 0) is created.Line : (0, 0) to (0, 0) is created.Point : (0, 0) is created.Point : (0, 0) is created.Line : (0, 0) to (0, 0) is created.Point : (0, 0) is created.Point : (0, 0) is created.Line : (0, 0) to (0, 0) is created.Line : (0, 0) to (1, 1)Line : (1, 1) to (2, 3)Line : (2, 3) to (4, 5)Line : (0, 1) to (1, 0)Point : (1, -2) is copied.Point : (2, -1) is copied.Line : (1, -2) to (2, -1) is created.Point : (1, -2) is copied.Point : (0, 0) is copied.Line : (1, -2) to (0, 0) is created.Point : (2, -1) is copied.Point : (0, 0) is copied.Line : (2, -1) to (0, 0) is created.Point : (1, -2) is copied.Point : (2, -1) is copied.Line : (1, -2) to (2, -1) is copied.Line : (1, -2) to (2, -1)Line : (1, -2) to (2, -1)Line : (2, -1) to (0, 0)Line : (0, 0) to (2, -1)Line : (0, 0) to (2, -1) is erased.Point : (2, -1) is erased.Point : (0, 0) is erased.Line : (2, -1) to (0, 0) is erased.Point : (0, 0) is erased.Point : (2, -1) is erased.Line : (1, -2) to (2, -1) is erased.Point : (2, -1) is erased.Point : (1, -2) is erased.Line : (1, -2) to (2, -1) is erased.Point : (2, -1) is erased.Point : (1, -2) is erased.Line : (0, 1) to (1, 0) is erased.Point : (1, 0) is erased.Point : (0, 1) is erased.Line : (2, 3) to (4, 5) is erased.Point : (4, 5) is erased.Point : (2, 3) is erased.Line : (1, 1) to (2, 3) is erased.Point : (2, 3) is erased.Point : (1, 1) is erased.Line : (0, 0) to (1, 1) is erased.Point : (1, 1) is erased.Point : (0, 0) is erased.Point : (0, 0) is erased.Point : (2, -1) is erased.Point : (1, -2) is erased.

HINT

Append Code



#include <iostream>

using namespace std;
class Point
{
private:
    double x,y;
public:
    Point(double _x = 0,double _y = 0)
    {
        x = _x;
        y = _y;
        cout << "Point : "<< *this <<" is created." << endl;
    }
    Point(const Point &k)
    {
        x = k.x;
        y = k.y;
        cout << "Point : "<< k <<" is copied." << endl;
    }
    void setXY(double _x,double _y)
    {
        x = _x;
        y = _y;
    }
    ~Point()
    {
        cout << "Point : "<< *this <<" is erased." << endl;
    }
    friend ostream & operator<<(ostream& os ,const Point & k)
    {
        os << "(" << k.x << ", " << k.y << ")";
        return os;
    }
    void show()
    {
        cout << "Point : " << *this << endl;
    }
};
class Line
{
private:
    Point p1,p2;
    public:
        Line()
        {
             cout << "Line : "<<p1<<" to "<<p2<<" is created." << endl;
        }
        Line(const Line &k):p1(k.p1),p2(k.p2)
        {
            cout << "Line : "<<p1<<" to "<<p2<<" is copied." << endl;
        }
        Line(const Point &_p1,const Point &_p2):p1(_p1),p2(_p2)
        {
            cout << "Line : "<<p1<<" to "<<p2<<" is created." << endl;
        }
        Line(double x1,double y1,double x2,double y2):p1(x1,y1),p2(x2,y2)
        {
            cout << "Line : "<<p1<<" to "<<p2<<" is created." << endl;
        }
        void show()
        {
            cout <<"Line : "<<p1<<" to " <<p2<< endl;
        }
        Line& setLine(double x1,double y1,double x2,double y2)
        {
            p1.setXY(x1,y1);
            p2.setXY(x2,y2);
            return *this;
        }
        Line& setLine(const Point &_p1,const Point &_p2)
        {
            p1 = _p1;
            p2 = _p2;
           return *this;
        }
        Line& setLine(const Line& k)
        {
            *this = k;
            return *this;
        }
        void readLine()
        {
            char c;
            double x1,y1,x2,y2;
            cin >> x1 >>c>> y1 >> x2 >>c>> y2;
            p1.setXY(x1,y1);
            p2.setXY(x2,y2);
        }
        ~Line()
        {
            cout << "Line : "<<p1<<" to "<<p2<<" is erased." << endl;
        }
};
int main()
{
    int num, i;
    Point p(1, -2), q(2, -1), t;
    t.show();
    std::cin>>num;
    Line line[num];
    for(i = 0; i < num; i++)
    {
        line[i].readLine();
        line[i].show();
    }
    Line l1(p, q), l2(p,t), l3(q,t), l4(l1);
    l1.show();
    l2.setLine(l1).show();
    l3.show();
    l4.setLine(t,q).show();
}


### MCP MySQL Server Configuration and Management #### Overview of MCP MySQL Server Setup For configuring an MCP (Multi-Cloud Platform) environment with a MySQL server, the setup involves ensuring that all necessary configurations are correctly applied to integrate MySQL as part of the data storage solution. In scenarios where applications like Nacos need to connect to a MySQL database, it is crucial to ensure proper initialization and configuration. #### Initialization of MySQL Database for Application Integration When initializing a MySQL database specifically for application integration such as switching from default settings to using MySQL, one can modify `application.properties` or configure during Docker startup[^1]. This ensures that the application connects to the correct MySQL instance configured within the MCP environment. #### Schema Creation for Application Data Persistence To avoid issues related to no datasource exceptions when deploying services on platforms like Nacos via Docker while aiming at persisting data into MySQL, creating databases and tables beforehand is essential. The SQL script located at `D:\software\nacos\nacos-server-2.3.1\conf\mysql-schema.sql` serves this purpose by providing commands needed for setting up schemas required by Nacos[^2]. #### Troubleshooting Common Issues During Deployment In cases similar to those described in experiences involving deployment challenges—such as encountering errors due to missing database creation steps—it becomes evident how critical these preparatory actions are before attempting service deployments. Ensuring that both the database exists along with its schema helps prevent common pitfalls associated with connectivity problems between containers running inside Docker environments and external databases[^3]. ```sql -- Example command to create a new database named 'mcp_db' CREATE DATABASE mcp_db; USE mcp_db; SOURCE D:/software/nacos/nacos-server-2.3.1/conf/mysql-schema.sql; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值