第六周项目1-点的坐标与距离

来源:互联网 发布:怎么查国外数据 编辑:程序博客网 时间:2024/06/09 20:54
/**程序的版权和版本声明部分:*Copyright(c)2014,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:田成琳*完成日期:2014  年 4 月 1 日*版本号:v1.0*对任务及求解方法的描述部分:*输入描述:-*问题描述:设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等。           在设计中,由于求距离、求对称点等操作对原对象不能造成任何改变,           所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改。*程序输出:点坐标与距离*问题分析:*算法设计:*/#include<iostream>#include<cmath>#include<cstdlib>using namespace std;class CPoint{private:double x;  // 横坐标double y;  // 纵坐标public:CPoint(double xx=0,double yy=0);double Distance1(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::Distance1(CPoint p) const{return sqrt(pow(x-p.x,2)+pow(y-p.y,2));}double CPoint::Distance0() const{return sqrt(x*x+y*y); }CPoint CPoint::SymmetricAxis(char style) const{CPoint p;switch(style){case 'x':p.x=x;p.y=-y;break;case 'y':p.x=-x;p.y=y;break;case 'o':p.x=-x;p.y=-y;}return  p;}void CPoint::input(){cout<<"请输入点的坐标:"<<endl;cin>>x>>y;}void CPoint::output(){cout<<"该点坐标为:"<<endl;cout<<"("<<x<<","<<y<<")"<<endl;}int main(){CPoint a,b,c;int chose;a.input();a.output();while(1){cout<<"请选择何种操作:"<<endl;cout<<"1.计算到原点的距离      2.计算与x轴的对称点"<<endl;cout<<"3.计算与y轴的对称点     4.计算与原点的对称点"<<endl;cout<<"5.计算与另一点的距离    0.退出"<<endl;cin>>chose;switch(chose){case 0:exit(0);case 1:cout<<a.Distance0()<<endl;break;case 2:c=a.SymmetricAxis('x');c.output();break;case 3:c=a.SymmetricAxis('y');c.output();break;case 4:c=a.SymmetricAxis('o');c.output();break;case 5:b.input();cout<<a.Distance1(b)<<endl;break;default:cout<<"输入有误,请重新输入:"<<endl;cin>>chose;}}return 0;}


运行结果:

 

心得体会:

由于函数后加了const,在编写时要特别注意,不能改变其数据的值。其中CPoint SymmetricAxis(char style) const;把私有数据的值先给另一变量,再返回

0 0