//02.* Copyright (c) 2013, 烟台大学计算机学院
//04.* 作 者: 马德鹏
//05.* 完成日期:2014 年 4 月 4 日
//06.* 版 本 号:v1.0
//07.*
#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 SymmertricAxis(char style) const;//style取‘x',’y'和‘0’分别表示按x轴,y轴,原点对称
void input();//以x,y形式输入坐标点
void output();//以(x,y)形式输出坐标点
};
CPoint::CPoint(double xx,double yy)
{
x=xx;
y=yy;
}
double CPoint::Distance0()const
{
return(sqrt(x*x+y*y)); //求点到原点的距离
}
double CPoint::Distance1(CPoint p)const
{
return(sqrt(p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)); //求两点间的距离
}
CPoint CPoint::SymmertricAxis(char style)const
{
CPoint p(this->x,this->y);
switch(style)
{
case 'x': ;//style取‘x',’y'和‘0’分别表示按x轴,y轴,原点对称
p.y=-y;
cout<<"("<<x<<","<<p.y<<")"<<endl;
break;
case 'y':
p.x=-x;
cout<<"("<<p.x<<","<<y<<")"<<endl;
break;
case 0:
p.x=-x;
p.y=-y;
cout<<"("<<p.x<<","<<p.y<<")"<<endl;
break;
}
return p;
}
void CPoint::input()
{
char s;
double xx,yy;
while(1)
{
cin>>xx>>s>>yy; //输入X,Y值
if(s!=',')
cout<<"输入格式有误"<<endl;
else
break;
}
x=xx;
y=yy;
}
void CPoint::output()
{
cout<<"("<<x<<","<<y<<")"; //输出X,Y值
}
int main()
{
CPoint op1,op2;
cout<<"请输入坐标(m,n):"<<endl; //输入第一个点的坐标
op1.input();
cout<<"输出坐标点:"<<endl;
op1.output();
cout<<endl;
cout<<"请输入坐标(m,n):"; //输入第二个点的坐标
cout<<endl;
op2.input();
cout<<"输出坐标点:";
cout<<endl;
op2.output();
cout<<endl;
cout<<"两点间的距离为:"<<endl;
cout<<op2.Distance1(op1);
cout<<endl;
cout<<"坐标点到原点的距离为:"<<endl;
cout<<op1.Distance0();
cout<<endl;
cout<<"关于原点对称:"<<endl;
op2.SymmertricAxis(0);
cout<<"关于X轴对称:"<<endl;
op2.SymmertricAxis('x');
cout<<"关于Y轴对称:"<<endl;
op2.SymmertricAxis('y');
return 0;
}
体验常成员函数
最新推荐文章于 2022-03-15 09:01:36 发布