定义一个描述二维坐标系中点对象的类Point,它具有下述成员函数:

问题描述:

定义一个描述二维坐标系中点对象的类Point,它具有下述成员函数:
Point(); //不带参构造函数
Point(double x,double y); //带参构造函数
double r(); //计算极坐标的极半径
double theta(); //计算极坐标的极角 (使用atan2函数)
double distance(const Point &p); //计算与点p的距离
Point relative(const Point &p); //计算相对于点p的相对坐标
int is_above_left(const Point&p); //判断是否在点p的左上方(1表示是,0表示不是)
//windows下坐标原点为屏幕左上角,X轴向右,Y轴向下
void set_x(double x); //重新设置x的值
void set_y(double y); //重新设置y的值
double get_x(); //提取x的值
double get_y(); //提取y的值
7 8 4 4
(0,0)
(7,8)
(-3,-4)
p的极半径=5.65685,P的极角=0.785398
p2与p的距离=5,点p2不在p的左上方,p在p2的左上方
请按任何键继续.
用以下程序调试,输出结果见图(其中最上一行是输入的数据,其它是输出的结果)
void print(Point &p) //输出坐标
{cout >w;
print(p);
Point p2(x,y);
p.set_x(z);
p.set_y(w);
print(p2);
print(p.relative(p2));
cout

#include
#include
class Point
{
private:
\x05double m_x;
\x05double m_y;\x05
public:
\x05Point()
\x05{
\x05\x05m_x = 0.0;
\x05\x05m_y = 0.0;
\x05}
\x05
\x05Point(double x,double y)
\x05{
\x05\x05m_x = x;
\x05\x05m_y = y;\x05\x05
\x05}
\x05
\x05~Point()
\x05{
\x05\x05
\x05}
\x05
\x05double r()
\x05{
\x05\x05return sqrt(m_x*m_x + m_y*m_y);
\x05}
\x05
\x05double theta()
\x05{
\x05\x05return atan2(m_y,m_x);
\x05}
\x05
\x05double distance(const Point &p)
\x05{
\x05\x05double dx = p.get_x() - m_x;
\x05\x05double dy = p.get_y() - m_y;
\x05\x05
\x05\x05return (dx*dx + dy*dy);
\x05}
\x05
\x05Point &relative(const Point &p)
\x05{
\x05\x05double x = m_x - p.get_x();
\x05\x05double y = m_y - p.get_y();
\x05\x05
\x05\x05Point point(x,y);
\x05\x05
\x05\x05return point;
\x05}
\x05
\x05int is_above_left(const Point &p)
\x05{
\x05\x05if(m_x p.get_y())
\x05\x05{
\x05\x05\x05return 1;
\x05\x05}
\x05\x05
\x05\x05return 0;
\x05}
\x05
\x05void set_x(double x)
\x05{
\x05\x05m_x = x;
\x05}
\x05
\x05void set_y(double y)
\x05{
\x05\x05m_y = y;
\x05}
\x05
\x05double get_x() const
\x05{
\x05\x05return m_x;
\x05}
\x05
\x05double get_y() const
\x05{
\x05\x05return m_y;
\x05}
};