#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; i <= num; i++)
{
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);
}
OJ:line point 6
最新推荐文章于 2024-10-08 18:38:07 发布