您的位置:首页 > 其它

体验常成员函数

2014-04-01 14:46 316 查看
/*

* Copyright (c) 2013, 烟台大学计算机学院

* All rights reserved.

* 作 者:张来鑫

* 完成日期:2014 年 4 月 1 日

* 版 本 号:v1.0

*/

#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; // 两点之间的距离(一点是当前点,另一点为参数p)

double Distance0() const; // 到原点的距离

CPoint SymmetricAxis1(char style) const;//style取'x','y'和'o'分别表示按x轴, y轴, 原点对称

void input(); //以x,y 形式输入坐标点

void output(); //以(x,y) 形式输出坐标点

};

int main()

{

char style;

CPoint c1,c2,d;

c1.input();

cout<<"坐标为:";

c1.output();

cout<<"另一点坐标为:";

c2.input();

c2.output();

cout<<"到原点的距离为:"<<c1.Distance0()<<endl;

cout<<"两点距离为:"<<c1.Distance1(c2)<<endl;

cout<<"关于某一轴对称:"<<endl;

cin>>style;

d=c1.SymmetricAxis1(style);

d.output();

return 0;

}

CPoint::CPoint(double xx,double yy)

{

x=xx;

y=yy;

}

double CPoint::Distance1(CPoint p) const

{

return(sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)));

}

void CPoint::input()

{

cin>>x>>y;

}

double CPoint::Distance0() const

{

return(sqrt(x*x+y*y));

}

CPoint CPoint::SymmetricAxis1(char style) const

{

CPoint p(this->x,this->y);//不加this就会使一个数为0,例如关于x轴对称,就会输出(0,-y)

switch(style)

{

case 'x':

p.y=-y;

cout<<"关于x轴对称点为:";

break;

case 'y':

p.x=-x;

cout<<"关于y轴对称点为:";

break;

case 'o':

p.x=-x;

p.y=-y;

cout<<"关于原点的对称点为:";

break;

default:

cout<<"输入有误"<<endl;

}

return p;

}

void CPoint::output()

{

cout<<"("<<x<<","<<y<<")"<<endl;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: