【任务3】设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等
#include <iostream>
#include <Cmath>
using namespace std;
enum SymmetricStyle { axisx,axisy,point};//分别表示按x轴, y轴, 原点对称
class CPoint
{
private:
double x; // 横坐标
double y; // 纵坐标
public:
CPoint(double xx=0,double yy=0);
double Distance(CPoint p) const; // 两点之间的距离(一点是当前点,另一点为参数p)
double Distance0() const; // 到原点的距离
CPoint SymmetricAxis(SymmetricStyle style) const; // 返回对称点
void input(); //以x,y 形式输入坐标点
void output(); //以(x,y) 形式输出坐标点
};
CPoint::CPoint(double xx,double yy):x(xx),y(yy){}
double CPoint::Distance(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(SymmetricStyle style) const
{
CPoint p( x, y );
switch ( style )
{
case axisx: //关于x轴对称
p.y = -y; break;
case axisy: //关于y轴对称
p.x = -x; break;
case point: //关于原点对称
p.x = -x; p.y = -y;
}
return p;
}
void CPoint::input()
{
char ch;
while(1)
{
cin >> x >> ch >> y;
if ( ch != ',' )
cout << "输入格式错误" << endl;
else
break;
}
}
void CPoint::output()
{
cout << "(" << x << "," << y << ")" << endl;
}
void main()
{
CPoint c1,c2,c;
cout << "①请输出x、y的值" << endl;
c1.input();
cout << "②请输出x、y的值" << endl;
c2.input();
c1.output();
c2.output();
cout << "①②两点间距离" << c1.Distance(c2) << endl;
cout << "①距原点距离" << c1.Distance0() << endl;
cout << "②距原点距离" << c2.Distance0() << endl;
c = c1.SymmetricAxis(axisx);
cout << "①关于x轴对称" << endl;
c.output();
c = c2.SymmetricAxis(axisy);
cout << "②关于y轴对称" << endl;
c.output();
c = c1.SymmetricAxis(point);
cout << "①关于原点对称" << endl;
c.output();
system("pause");
}
上机感言:程序很长是一点一点写的,反过去看有种成就感哈~