第六周任务三(坐标点类)

来源:互联网 发布:快用苹果助手mac版 编辑:程序博客网 时间:2024/05/13 23:58
问题描述:设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
 
#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;elsebreak;}}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();  }

注意:输入点时要有空格隔开,否则会出现死循环


原创粉丝点击