题目
分析
写一个函数,能判断输入的点和圆的关系。
没考察什么语法,就是调用函数判断,很简单。
注意:计算的dis是(x1-x2)2+(y1-y2)2,因此和圆的半径判断的时候,是和半径的平方判断。
void isPointerInCircle(Pointer p){
double dis=(p.getX()-center.getX())*(p.getX()-center.getX())+(p.getY()-center.getY())*(p.getY()-center.getY());
if(dis==radius*radius){
cout<<"on"<<endl;
return;
}
if(dis>radius*radius){
cout<<"out"<<endl;
return;
}
cout<<"in"<<endl;
return;
}
代码
#include <iostream>
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......
void isPointerInCircle(Pointer p){
double dis=(p.getX()-center.getX())*(p.getX()-center.getX())+(p.getY()-center.getY())*(p.getY()-center.getY());
if(dis==radius*radius){
cout<<"on"<<endl;
return;
}
if(dis>radius*radius){
cout<<"out"<<endl;
return;
}
cout<<"in"<<endl;
return;
}
};
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;
}