/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 在校学生
* All rightsreserved.
* 文件名称: 项目1.cpp
* 作 者:刘旺
* 完成日期:2014年4月2日
* 版本号: 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 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((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)) ;
}
double CPoint::Distance0()const
{
return sqrt(x*x+y*y) ;
}
CPoint CPoint::SymmetricAxis (char style)const
{
CPoint p ;
switch(style)
{
case 'o': p.x = -x ; p.y = -y; break ;
case 'x': p.x = -x ; p.y = y; break ;
case 'y': p.x = x ; p.y = -y; break ;
}
return p ;
}
void CPoint::input()
{
cin >> x >> y ;
}
void CPoint::output()
{
cout << "点坐标为(" << x << ',' << y << ")" << endl ;
}
int main()
{
CPoint p1,p2,p ;
cout << "请输入p1点坐标x,y:" ;
p1.input() ;
cout << "p1点坐标为:" ;
p1.output() ;
p=p1.SymmetricAxis('y') ;
cout << "关于y轴对称:" ;
p.output() ;
p=p1.SymmetricAxis('x') ;
cout << "关于x轴对称:" ;
p.output() ;
p=p1.SymmetricAxis('o') ;
cout << "关于原点对称:" ;
p.output() ;
p1.Distance0() ;
cout << "请输入p2点坐标x,y:" ;
p2.input() ;
cout << "p2点坐标为:" ;
p2.output() ;
p=p2.SymmetricAxis('y') ;
cout << "关于y轴对称:" ;
p.output() ;
p=p2.SymmetricAxis('x') ;
cout << "关于x轴对称:" ;
p.output() ;
p=p2.SymmetricAxis('o') ;
cout << "关于原点对称:" ;
p.output() ;
cout << "p1,p2俩点的距离为:" ;
p1.Distance1(p2) ;/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 在校学生
* A