项目一:体验常成员函数
来源:互联网 发布:淘宝怎样推广最有效 编辑:程序博客网 时间:2024/05/16 09:31
【项目1-体验常成员函数】
设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等。在设计中,由于求距离、求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改。
class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0); double Distance1(CPoint p) const; //两点之间的距离(一点是当前点——想到this了吗?,另一点为p) double Distance0() const; // 到原点(0,0)的距离 CPoint SymmetricAxis(char style) const;//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称 void input(); //以x,y 形式输入坐标点 void output(); //以(x,y) 形式输出坐标点};
<pre name="code" class="cpp">#include "iostream"#include "Cmath"using namespace std;class CPoint{private: double x; // 横坐标 double y; // 纵坐标public: CPoint(double xx=0,double yy=0); double Distance1(CPoint p) const; // 两点之间的距离 double Distance0() const; // 到原点的距离 CPoint SymmetricAxis(char style) const; // 返回对称点 void input(); //以x,y 形式输入坐标点 void output(); //以(x,y) 形式输出坐标点};CPoint::CPoint(double xx,double yy){ x=xx; y=yy;}// 输入坐标点void CPoint::input(){ char ch; cout<<"请输入坐标点(格式x,y ):"; while(1) { cin>>x>>ch>>y; if (ch==',') break; cout<<"输入的数据格式不符合规范,请重新输入\n"; }}// 输出坐标点void CPoint::output(){ cout<<"("<<x<<", "<<y<<")"<<endl;}// 求两点之间的距离double CPoint::Distance1(CPoint p) const{ double d; d=sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); return d;}// 求点到原点的距离double CPoint::Distance0() const{ double d; d=sqrt(x*x+y*y); return d;}// 求对称点, style取'x','y'和'o'分别表示按x轴, y轴, 原点对称CPoint CPoint::SymmetricAxis(char style) const{ CPoint p(this->x,this->y);//用复制构造函数时,写作p(*this) switch(style) { case 'x': p.y=-y; break; case 'y': p.x=-x; break; case 'o': p.x=-x;p.y=-y; } return p;}int main( ){ double distance; CPoint p1,p2,p; cout<<"第1个点p1,"; p1.input(); cout<<"第2个点p2,"; p2.input(); distance=p1.Distance1(p2); cout<<"两点的距离为:"<<distance<<endl; distance=p1.Distance0(); cout<<"p1到原点的距离为:"<<distance<<endl; p=p1.SymmetricAxis('x'); cout<<"p1关于x轴的对称点为:"; p.output(); p=p1.SymmetricAxis('y'); cout<<"p1关于y轴的对称点为:"; p.output(); p=p1.SymmetricAxis('o'); cout<<"p1关于原点的对称点为:"; p.output(); return 0;}运行结果;
<img src="http://img.blog.csdn.net/20150408195503442?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenM5NTI4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
0 0
- 2014-项目一--体验常成员函数
- 项目一:体验常成员函数
- 第六周 项目一 体验常成员函数
- 第六周项目一-体验常成员函数
- 第六周 项目一 体验常成员函数
- 第六周项目一体验常成员函数
- 第06周:项目一:体验常成员函数
- 第六周项目一-体验常成员函数
- 第六周上机项目一 体验常成员函数.
- 第五周项目一:体验常成员函数
- 第五周项目一 体验常成员函数
- 第五周项目一--体验常成员函数
- 第四周 项目一:体验常成员函数
- 第五周项目一:体验常成员函数
- 2015年第五周项目一:体验常成员函数
- 第五周项目一体验常成员函数
- 第四周项目一 体验常成员函数
- 第五周项目一 体验常成员函数
- MD5算法实例
- 深度学习介绍(五)pooling
- JS中的this用法详解
- Flod
- iOS开发--一些开源的学习资源
- 项目一:体验常成员函数
- leetcode rotate image
- HDU 2795 Billboard(简单线段树)
- 第五周 【项目4-静态成员应用】
- A+B HDU3787
- 【j2ee spring】24、关于配置jpa的时候,提示找不到persistence的名字我的cutter_point
- 硬盘数据恢复
- Linux内核源代码情景分析-进程间通信-管道
- 仅用css+HTML实现图片切换效果