题解 | 点与圆的关系 类
点和圆的关系
http://www.nowcoder.com/practice/fdbbd0aaf89f49818e9ee1afb02deb10
#include using namespace std;
//点类
class Pointer { public: void set_x(int x) { m_x = x; } void set_y(int y) { m_y = y; } int get_x() { return m_x; } int get_y() { return m_y; }
int m_x;
int m_y;
};
//圆类
class Circle { public: void set_ccen(int x,int y) { center.m_x = x; center.m_y = y; } void set_cr(int r) { radius = r; } Pointer get_ccen() { return center; } int get_cr() { return radius; }
Pointer center;
int radius;
void isPointerInCircle(Pointer &p,Circle &c)
{
//点到圆心距离与半径进行比较
int distance = (c.get_ccen().get_x()-p.get_x())*(c.get_ccen().get_x()-p.get_x())+
(c.get_ccen().get_y()-p.get_y())*(c.get_ccen().get_y()-p.get_y()); int ra = c.get_cr()*c.get_cr(); if(distance == ra) { cout << "on" << endl; } else if(distance > ra) { cout << "out" << endl; } else { cout << "in" << endl; } }
};
int main() {
// 键盘输入点的坐标
int x,y;
cin >> x;
cin >> y;
Pointer p;
p.set_x(x);
p.set_y(y);
Circle c;
c.set_ccen(5,0);
c.set_cr(5);
c.isPointerInCircle(p,c);
return 0;
}