/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: * 作 者: 臧鹏 * 完成日期: 2012 年 3 月 27 日 * 版 本 号: * 对任务及求解方法的描述部分 * 输入描述: * 问题描述:设计平面坐标点类,计算两点之间的距离,到原点的距离,关于坐标轴和原点的对称点等,其中使用了枚举 * 程序输出: * 程序头部的注释结束 */ #include<iostream> #include<cmath> using namespace std; enum SymmetricStyle{axisx,axisy,point};//分别表示按x轴,y轴,原点对称 class CPoint { private: double x;//横坐标 double y;//纵坐标 public: CPoint(double xx = 0,double yy = 0); double Distance(CPoint p);//两点之间的距离(一点是当前点,另一点为参数p) double Distance0() const; //到原点的距离 CPoint SymmetricAxis(SymmetricStyle style) const;//返回到对称点 void input();//以x,y形式输入坐标点 void output(); //以(x,y)形式输入坐标点 }; using namespace std; CPoint::CPoint(double xx ,double yy ):x(xx),y(yy){} double CPoint::Distance(CPoint p)//两点之间的距离(一点是当前点,另一点为参数p) { return sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)); } double CPoint::Distance0() const //到原点的距离 { double m = 0; m = sqrt(x*x+y*y); return m; } 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.x = -x; p.y = -y; break; } return p; } void CPoint::input()//以x,y形式输入坐标点 { char a; cout<<"以x,y形式输入坐标点"<<endl; cin>>x>>a>>y; while(1) { if(a != ',') { cout<<"格式不正确请重新输入"<<endl; } else break; } } void CPoint::output() //以(x,y)形式输入坐标点 { cout<<'('<<x<<','<<y<<')'<<endl; } void main() { double distance; CPoint p1,p2,p; cout<<"请输入第一个点p1"<<endl; p1.input(); cout<<"请输入第二个点p2"<<endl; p2.input(); distance = p1.Distance(p2); cout<<"两点距离为"<<distance<<endl<<endl; distance = p1.Distance0(); cout<<"p1到原点的距离"<<distance<<endl; p = p1.SymmetricAxis(axisx) ; cout<<"关于x轴对称点"<<endl; p.output(); p = p1.SymmetricAxis(axisy) ; cout<<"关于y轴对称点"<<endl; p.output(); p = p1.SymmetricAxis(point) ; cout<<"关于原点的对称点"<<endl; p.output(); system("pause"); }