#include < iostream >
#include < Cmath >
using namespace std;
class Point //定义坐标点类
{public:
int x, y; //点的横坐标和纵坐标
Point( ) { x = 0 ; y = 0 ; }
Point ( int x0, int y0 ) { x = x0; y = y0; }
void PrintP( ) { cout << "Point:(" << x << "," << y << ")"; }
};
class Line: public Point //利用坐标点类定义直线类, 其基类的数据成员表示直线的中点
{private:
class Point pt1, pt2; //直线的两个端点
public:
Line ( Point pts, Point pte ) ; //构造函数
double Dx() { return pt2.x - pt1.x; }
double Dy() { return pt2.y - pt1.y; }
double Length(); //计算直线的长度
void PrintL(); //输出直线的两个端点和直线长度
};
//构造函数,分别用参数初始化对应的端点及由基类属性描述的中点
Line::Line ( Point pts, Point pte )
{
pt1 = pts;
pt2 = pte;
}
//计算直线的长度
double Line::Length ( )
{
return sqrt ( Dx() * Dx() + Dy() * Dy() );
}
void Line::PrintL()
{
cout << " 1st ";
pt1.PrintP( );
cout << "\n 2nd ";
pt2.PrintP( );
cout << "\n The Length of Line: " << Length( ) << endl;
}
int main()
{
Point ps ( -2, 5 ), pe( 7, 9 );
Line l ( ps, pe );
l.PrintL( ); //输出直线l的信息
cout << " The middle point of Line: ";
cout << "(" << ( ps.x + pe.x ) / 2 << "," << ( ps.y + pe.y ) / 2 << ")" << endl; //输出直线l中点的信息
system ( "pause" );
return 0;
}
运行结果:
1st Point:(-2,5)
2nd Point:(7,9)
The Length of Line: 9.84886
The middle point of Line: (2,7)
请按任意键继续. . .