输出一点的对称点,两点间的距离

来源:互联网 发布:p视频的软件 编辑:程序博客网 时间:2024/04/30 02:55

/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:                              * 作    者:   苗影                           * 完成日期:     2012    年   3    月     28   日* 版 本 号:         

* 对任务及求解方法的描述部分* 输入描述: * 问题描述: * 程序输出: * 程序头部的注释结束*/

#include<iostream>#include<Cmath>using namespace std;enum SymmetricStyle { axisx,axisy,point};//分别表示按x轴, y轴, 原点对称class CPoint{private:mutable double x;  // 横坐标mutable double y;  // 纵坐标public:CPoint(double xx=0,double yy=0);double Distance(CPoint p) const;   // 两点之间的距离(一点是当前点,另一点为参数p)double Distance0() const;          // 到原点的距离CPoint SymmetricAxis(SymmetricStyle style) const;   // 返回对称点void input();  //以x,y 形式输入坐标点void output(); //以(x,y) 形式输出坐标点};CPoint::CPoint(double xx,double yy){x=xx;y=yy;}//以x,y 形式输入坐标点void CPoint::input(){char c;double xx,yy;while(1){cout<<"请按照x,y格式输入"<<endl;cin>>xx>>c>>yy;if(c!=',')cout<<"格式不对,请重新输入"<<endl;elsebreak;}x=xx;y=yy;}// 到原点的距离double CPoint::Distance0()const {double s;s=sqrt(x*x+y*y);return s;}// 两点之间的距离(一点是当前点,另一点为参数p)double CPoint::Distance(CPoint p) const{double s;s=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));//注意p坐标的表达方式return s;} // 返回对称点CPoint CPoint::SymmetricAxis(SymmetricStyle style) const{switch(style){case axisx:y=-y;cout<<'('<<x<<','<<y<<')'<<endl;break;case axisy:x=-x;cout<<'('<<x<<','<<y<<')'<<endl;break;case point:x=-x;y=-y;cout<<'('<<x<<','<<y<<')'<<endl;break;}return 0;}//以(x,y) 形式输出坐标点void CPoint::output(){cout<<'('<<x<<','<<y<<')';}int main(){CPoint c1(2,3),c2(2,1),c3;cout<<"这两点";c1. output();c2.output();cout<<"之间的距离为:"<<c1. Distance(c2);cout<<endl;c1. output();cout<<"到原点的距离为:"<<c1.Distance0();cout<<endl;c2. output();cout<<"到原点的距离为:"<<c2.Distance0();cout<<endl;c3.input();cout<<"这两点";c1. output();c3.output();cout<<"之间的距离为:"<<c3. Distance( c1);cout<<endl;c3. output();cout<<"到原点的距离为:"<<c3.Distance0();cout<<endl;c3.output();cout<<"关于x轴的对称点:";c3.SymmetricAxis(axisx);cout<<endl;c1.output();cout<<"关于y轴的对称点:";c1.SymmetricAxis(axisy);cout<<endl;c2.output();cout<<"关于原点的对称点:";c2.SymmetricAxis(point);cout<<endl;return 0;}
 
经验积累:我以前很不习惯用switch语句,不过习惯了它还是比较方便的.