问题描述:设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
#include<iostream> #include<Cmath> using namespace std; enum SymmetricStyle{axisx,axisy,Point}; class CPoint { private: double x;//横坐标 double y;//纵坐标 public: CPoint(double xx=0,double yy=0); double Distance(CPoint p) const;//两点之间的距离 double Distance0() const;//点到原点的距离 CPoint SymmetricAxis(SymmetricStyle Style) const; void input();//输入点 void output();//输出点 }; CPoint::CPoint(double xx,double yy):x(xx),y(yy){} //定义两点间的距离函数 double CPoint::Distance(CPoint p) const { return sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); } //定义点到原点的距离函数 double CPoint::Distance0() const { return sqrt(x*x+y*y); } CPoint CPoint:: SymmetricAxis(SymmetricStyle Style) const { CPoint p(x,y); switch (Style) { case axisx: p.y=-y; break; case axisy: p.x=-x; break; case Point: p.y=-y; p.x=-x; break; } return p; } void CPoint::input() { char ch; while(1) { cin>>x>>ch>>y; if(ch!=',') cout<<"格式出现错误!"<<endl; else break; } } void CPoint::output() { cout<<"("<<x<<','<<y<<")"<<endl; } void main() { double distance; CPoint p1,p2,p; cout<<"第1个点p1:"; p1.input(); cout<<"第2个点p2:"; p2.input(); distance=p1.Distance(p2); cout<<"两点的距离为:"<<distance<<endl; distance=p1.Distance0(); cout<<"p1到原点的距离为:"<<distance<<endl; p=p1.SymmetricAxis(axisx); cout<<"p1关于x轴的对称点为:"; p.output(); p=p1.SymmetricAxis(axisy); cout<<"p1关于y轴的对称点为:"; p.output(); p=p1.SymmetricAxis(Point); cout<<"p1关于原点的对称点为:"; p.output(); }
注意:输入点时要有空格隔开,否则会出现死循环