OJ:line point 6

#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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章