#include<iostream>#include<stdlib.h>
#include<Cmath>
using namespace std;
class CPoint
{
private:
double x;//横坐标
double y;//纵坐标
public:
CPoint(double xx=0,double yy=0);
double Distance(CPoint p) const;//两点之间的距离(一点是当前点,另一点为参数p)
double Distance0() const;//到原点的距离
CPoint SymmetricAxis(char style) const;//style取‘x’,‘y’和‘o’分别按x轴,y轴,原点对称
void input();//以x,y形式输入坐标点
void output();//以(x,y)形式输出坐标点
};
CPoint::CPoint(double xx,double yy)
{
x=xx;y=yy;
}
double CPoint::Distance(CPoint p) const
{return sqrt((p.x-x)*(p.x-x)*(p.y-y)*(p.y-y));
}
double CPoint::Distance0() const
{
return sqrt(x*x+y*y);
}
CPoint CPoint::SymmetricAxis(char style) const
{
double cx=x,cy=y;
switch(style)
{
case'x':
cx=-x;break;
case'y':
cy=-y;break;
case'o':
cx=-x;
cy=-y;break;
}
CPoint cp(cx,cy);
return cp;
}
void CPoint::input()
{
char a;
cout<<"请输入点的坐标(如x,y的形式):";
cin>>x>>a>>y;
if(a!=',')
{
cout<<"您输入的格式有误!"<<endl;
input();
}
}
void CPoint::output()
{
cout<<"("<<x<<","<<y<<")";
}
int main()
{
CPoint C;
C.input();
CPoint cp1(1.0,1.0),cp2(1.0,0.0);
C.output();
cout<<"到";
cp1.output();
cout<<"的距离为:"<<C.Distance(cp1)<<endl;
C.output();
cout<<"到";
cp2.output();
cout<<"的距离为:"<<C.Distance(cp2)<<endl;
C.output();
cout<<"到原点的距离为:"<<C.Distance0()<<endl;
C.output();
cout << "关于x轴的对称点为:";
C.SymmetricAxis('x').output();
cout << endl;
C.output();
cout<< "关于y轴的对称点为:";
C.SymmetricAxis('y').output();
cout << endl;
C.output();
cout << "关于原点的对称点为:";
C.SymmetricAxis('o').output();
return 0;
}