/*
02.*烟台大学计算机学院学生
03.*All right reserved.
04.*文件名称*烟台大学计算机学院学生
05.*All right reserved.
06.*文件名称:体验常成员函数
07.*作者:王洪海
08.*完成日期:2013年4月1日
09.*版本号:v1.0
10.*对任务及求解方法的描述部分:体验常成员函数
11.*我的程序:
12.*/
#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 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;
}
//输入点的坐标
void CPoint::input()
{
cout<<"请输入任一点的坐标(x,y):"<<endl;
cin>>x>>y;
}
//输出点的坐标
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 l;
l=sqrt(x*x+y*y);
return l;
}
//取'x','y'和'o'分别表示按x轴, y轴, 原点对称
CPoint CPoint::SymmetricAxis(char style) const
{
CPoint p(this->x,this->y);
switch (style)
{
case 'x':
p.y=-y;
break;
case 'y':
p.x=-x;
case 'o':
{
p.y=-y;
p.x=-x;
}
break;
}
return p;
}
int main()
{
char c;
CPoint p1,p2,p3;
cout<<"请输入p1点的坐标:"<<endl;
p1.input();
cout<<"请输入p2点的坐标:"<<endl;
p2.input();
cout<<"p1,p2两点间的距离为: "<<p1.Distance1(p2)<<endl;
cout<<"p1点到原点的距离为: "<<p1.Distance0()<<endl;
cout<<"输入一个字符,分别是x,y,o代表x轴,y轴和原点对称"<<endl;
cin>>c;
p3=p1.SymmetricAxis(c);
p3.output();
}
运行结果,如下图: