#include <iostream>
#include <cmath>
using namespace std;
class Point
{
private:
double x,y;
public:
Point()
{
x=0;
y=0;
}
Point(int x_,int y_)
{
x=x_;
y=y_;
}
Point(const Point &p)
{
x=p.x;
y=p.y;
}
set(int x_,int y_)
{
x=x_;
y=y_;
}
double Distance(Point& Point)
{
return sqrt(pow(x-Point.x,2)+pow(y-Point.y,2));
}
void output()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
};
class Line
{
private:
static int num;
Point p1,p2;
int color;
public:
Line();
Line(int p1_x,int p1_y,int p2_x,int p2_y, int c);
Line(Point p1, Point p2, int c);
Line(const Line&l)
{
p1_x=l.p1_x;
p2=l.p2;
color=l.color;
}
void set_line(int p1_x,int p1_y,int p2_x,int p2_y);
void set_line(Point q1, Point q2);
void display();
};
Line::Line(): p1(0,0), p2(0,0), color(0)
{
num++;
}
Line::Line(int p1_x,int p1_y,int p2_x,int p2_y, int c): p1(p1_x, p1_y), p2(p2_x, p2_y), color(c)
{
num++;
}
Line::Line(Point p1, Point p2, int c): p1(p1), p2(p2), color(c)
{
num++;
}
void Line::set_line(int p1_x,int p1_y,int p2_x,int p2_y)
{
p1.set(p1_x, p1_y);
p2.set(p2_x, p2_y);
}
void Line::set_line(Point q1, Point q2)
{
p1 = q1;
p2 = q2;
}
void Line::display()
{
cout<<"起点:";
p1.output();
cout<<"终点:";
p2.output();
cout<<"颜色:"<<color<<endl;
cout<<"长度:"<<p1.Distance(p2)<<endl;
cout<<"线段的个数:"<<num<<endl;
cout<<endl;
}
int main()
{
Line l1(10, 20, 30, 40, 5);
l1.display();
Point p1(23, 56), p2(14, 37);
Line l2(p1,p2,50);
l2.display();
l2.set_line(p1, p2);
l2.display();
Line l3(l1);
l3.display();
Line l4;
l4.display();
l4.set_line(10, 20, 30, 40);
l4.display();
}