题解 | #点和圆的关系#
点和圆的关系
http://www.nowcoder.com/practice/fdbbd0aaf89f49818e9ee1afb02deb10
#include using namespace std;
// 点类 class Pointer {
private:
int x; // x 坐标
int y; // y 坐标
public:
void setX(int x) {
this->x = x;
}
int getX() {
return x;
}
void setY(int y) {
this->y = y;
}
int getY() {
return y;
}
};
// 圆类 class Circle {
private:
Pointer center; // 圆心 ... ?
int radius; // 半径
public:
void setCenter(int x, int y) {//设置圆心坐标
center.setX(x);//使用点类函数
center.setY(y);
}
void setRadius(int radius) {//设置圆的半径
this->radius = radius;
}
// write your code here......
int getX() {
return center.getX();//使用了私有变量中的Pointer的函数
}
int getY() {
return center.getY();
}
/*int getRadius() {
return this ->radius;
}*/
void isPointerInCircle(Pointer p) {
int distance = (p.getX() - this ->getX()) ^ 2 + (p.getY() - this ->getY()) ^ 2;//点与圆心的距离
if (distance == this ->radius) {
cout << "on" << endl;
} else if (distance < this ->radius) {
cout << "in" << endl;
} else {
cout << "out" << endl;
}
}
};
int main() {
// 键盘输入点的坐标
int x, y;
cin >> x;
cin >> y;
// 创建一个点
Pointer p;
p.setX(x);
p.setY(y);
// 创建一个圆
Circle c;
c.setCenter(5, 0);
c.setRadius(5);
// 判断点和圆的关系
c.isPointerInCircle(p);
return 0;
}