#include <iostream>
using namespace std
class Point{
public:
double a
double b
public:
Point(double aa,double bb):a(aa),b(bb) {cout<<"Point : ("<<a<<", "<<b<<") is created."<<endl
Point(double aa):a(aa),b(aa) {cout<<"Point : ("<<a<<", "<<b<<") is created."<<endl
Point():a(0),b(0) {cout<<"Point : ("<<a<<", "<<b<<") is created."<<endl
double x()const {return a
double y()const {return b
void showNoEndOfLine()const {cout<<"Point : ("<<a<<", "<<b<<")"
~Point(){cout<<"Point : ("<<a<<", "<<b<<") is erased."<<endl
Point(const Point &q)
{
a=q.a
b=q.b
cout<<"Point : (" <<a<<", " <<b<<") is copied."<<endl
}
void show(){cout<<"Point : ("<<a<<", "<<b<<")"<<endl
}
class Line{
Point d1
Point d2
public:
Line():d1(0),d2(0){cout<<"Line : ("<<d1.x()<<", "<<d1.y()<<")"<<" to "<<"("<<d2.x()<<", "<<d2.y()<<") is created."<<endl
Line (double a,double b,double c,double d):d1(a,b),d2(c,d){cout<<"Line : ("<<d1.x()<<", "<<d1.y()<<")"<<" to "<<"("<<d2.x()<<", "<<d2.y()<<") is created."<<endl
Line (const Line &p):d1(p.d1),d2(p.d2){cout<<"Line : ("<<d1.x()<<", "<<d1.y()<<")"<<" to "<<"("<<d2.x()<<", "<<d2.y()<<") is copied."<<endl
Line (Point &a,Point &b):d1(a),d2(b){cout<<"Line : ("<<d1.x()<<", "<<d1.y()<<")"<<" to "<<"("<<d2.x()<<", "<<d2.y()<<") is created."<<endl
const Point &start() const {return d1
const Point &end () const {return d2
void setStart(Point &a1){d1=a1
void setEnd(Point &a2) {d2=a2
Line &setLine(const Line &p)
{
// d1.setx(p.d1.getx())
// d1.sety(p.d1.gety())
// d2.setx(p.d2.getx())
// d2.sety(p.d2.gety())
d1.a=p.d1.a
d1.b=p.d1.b
d2.a=p.d2.a
d2.b=p.d2.b
return *this
}
Line &setLine(const Point &aa,const Point &bb)
{
// d1.setx(a.getx())
// d1.sety(a.gety())
// d2.setx(b.getx())
// d2.sety(b.gety())
d1.a=aa.a
d1.b=aa.b
d2.a=bb.a
d2.b=bb.b
return *this
}
Line setLine(double a1,double b1,double a2,double b2)
{
d1.a=a1
d1.b=b1
d2.a=a2
d2.b=b2
cout<<"Line : ("<<d1.x()<<", "<<d1.y()<<")"<<" to "<<"("<<d2.x()<<", "<<d2.y()<<") is created."<<endl
return *this
}
~Line()
{
cout<<"Line : ("<<d1.x()<<", "<<d1.y()<<")"<<" to "<<"("<<d2.x()<<", "<<d2.y()<<") is erased."<<endl
}
void show()const
{
cout<<"Line : ("<<d1.x()<<", "<<d1.y()<<")"<<" to "<<"("<<d2.x()<<", "<<d2.y()<<")"<<endl
}
void readLine()
{
char c
double x1,y1,x2,y2
cin>>x1>>c>>y1>>x2>>c>>y2
d1.a=x1
d1.b=y1
d2.a=x2
d2.b=y2
}
}
void showLineCoordinate(const Line& line)
{
std::cout<<"Line : "
std::cout<<"("<<line.start().x()<<", "<<line.start().y()<<")"
std::cout<<" to "
std::cout<<"("<<line.end().x()<<", "<<line.end().y()<<")"
std::cout<<std::endl
}
void showLinePoint(const Line& line)
{
std::cout<<"Line : "
line.start().showNoEndOfLine()
std::cout<<" to "
line.end().showNoEndOfLine()
std::cout<<std::endl
}
void showLine(const Line& line)
{
line.show()
}
int main()
{
int num, i
Point p(1, -2), q(2, -1), t
t.show()
std::cin>>num
Line line[num + 1]
for(i = 1
{
line[i].readLine()
showLine(line[i])
}
Line l1(p, q), l2(p,t), l3(q,t), l4(l1)
showLineCoordinate(l1)
showLinePoint(l2)
showLinePoint(l3.setLine(l1))
showLineCoordinate(l4.setLine(t,q))
line[0].setStart(t)
line[0].setEnd(q)
}