/*Univercity:烟台大学
*@Class</A>计134~4
*@Author:薛富磊
*@Time:2014-4-1
*@Function:设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等。
在设计中,由于求距离、求对称点等操作对原对象不能造成任何改变,所以,
将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改。
*@Args:
*@Return:
*/
#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 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) 形式输出坐标点
};
double CPoint::Distance1(CPoint p) const
{
return(sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y)));
}
double CPoint::Distance0() const
{
return(sqrt(x*x+y*y));
}
CPoint CPoint::SymmetricAxis(char style) const
{
CPoint p(this->x,this->y);
switch(style)
{
case'x':
p.y=-y;
cout<<"关于X轴对称点点为:" ;break;
case'y':
p.x=-x;
cout<<"关于y轴对称点点为:" ;break;
case'0':
p.y=-y;
p.x=-x;
cout<<"关于0点对称点为:" ;break;
default:
cout<<"输入有误,请重新输入:"<<endl;
}
return p;
}
void CPoint::input()
{
char a,c,e;
//double b,d;
cout<<"输入点的坐标例如(7,7):";
while(1)
{
cin>>a>>x>>c>>y>>e;
if(a!='('||c!=','||e!=')')
{
cout<<"重新输入例如(7,7):";
input();break;
}
else break;
}
}
void CPoint::output()
{
cout<<"("<<x<<","<<y<<")"<<endl;
}
int main()
{
char style;
CPoint c1,c2,d;
c1.input();
cout<<"坐标为:";
c1.output();
c2.input();
cout<<"另一点坐标为:";
c2.output();
cout<<"到原点的距离为:"<<c1.Distance0()<<endl;
cout<<"两点距离为:"<<c1.Distance1(c2)<<endl;
cout<<"关于某一轴对称:"<<endl;
cin>>style;
d=c1.SymmetricAxis(style);
d.output();
return 0;
}
/*心得体会:
一开始一直是零
找不到错在哪
思路一点没错
找了兄弟
原因所在
b and d应该x and y
可悲可叹!!!!!
Unit6--problem2-点对点
最新推荐文章于 2022-11-25 22:40:15 发布