/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作 者:
* 完成日期:2013 年04月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):x(xx),y(yy) {}
double distance1(Cpoint p1) const; //两点之间的距离一点为当前点,另一个为参数p1.
double distance0() const; //到原点的距离
Cpoint axis(char style)const; //求此点关于x,y原点的对称点
void input(double xx,double yy); //输入坐标点
void output(); //输出坐标点
};
double Cpoint::distance1(Cpoint p1) const //两点之间的距离一点为当前点,另一个为参数p.
{
double a,b,c;
Cpoint p3;
p3.input(3,7);
a=p1.x-p3.x;
b=p1.y-p3.y;
c=sqrt(a*a+b*b);
return c;
}
double Cpoint::distance0() const //到原点的距离
{
double d;
d=sqrt(x*x+y*y);
return d;
}
void Cpoint::output()//输出坐标点
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
void Cpoint::input(double xx,double yy) //输入坐标点
{
x=xx;
y=yy;
}
Cpoint Cpoint::axis(char style) const //求此点关于x,y原点的对称点
{
Cpoint p1;
switch(style)
{
case 'x':
p1.x=x;
p1.y=-1*y;
break;
case 'y':
p1.x=-1*x;
p1.y=y;
break;
case '0':
p1.x=-1*x;
p1.y=-1*y;
break;
}
return p1;
}
int main()
{
Cpoint p(3,4);
double d,b;
d=p.distance0();
cout<<"p到原点的距离为"<<d<<endl;
b=p.distance1(p);
cout<<"两点之间的距离为:"<<b<<endl;
Cpoint p2;
p2=p.axis('x');
cout<<"关于X轴的对称点为:";
p2.output();
p2=p.axis('y');
cout<<"关于y轴的对称点为:";
p2.output();
p2=p.axis('0');
cout<<"关于原点的对称点为:";
p2.output();
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/daed86300c975d0f6b6f743abd9a18ed.bmp)