题目:点与圆的位置关系有三种:点在圆内,点在圆上,点在圆外。请编写两个类和一个全局函数,实现这三种关系的判断。
#include<iostream>
using namespace std;
class point
{
private:double x;
double y;
public:
point(double x,double y)
{
this->x=x;
this->y=y;
}
double get_x()
{
return x;
}
double get_y()
{
return y;
}
};
class circle
{
private:double r; point center;
public:
circle(double r,point center): r(r), center(center) {}
int isPointInCircle(point center,point dian)
{
if((dian.get_x()-center.get_x())*(dian.get_x()-center.get_x())+(dian.get_y()-center.get_y())*(dian.get_y()-center.get_y())<r*r)
{
cout<<"点在圆内!!"<<endl;
}
else if((dian.get_x()-center.get_x())*(dian.get_x()-center.get_x())+(dian.get_y()-center.get_y())*(dian.get_y()-center.get_y())==r*r)
{
cout<<"点在圆上!!"<<endl;
}
else if((dian.get_x()-center.get_x())*(dian.get_x()-center.get_x())+(dian.get_y()-center.get_y())*(dian.get_y()-center.get_y())>r*r)
{
cout<<"点在圆外!!"<<endl;
};
return 0;
}
};
int main()
{
double a,b,r;
cout<<" 请依次输入圆心的a(横坐标)和b(纵坐标)"<<endl;
cin>>a;
cin>>b;
point center(a,b);
cout<<"请输入圆的半径:"<<endl;
cin>>r;
circle p(r,center);
double x,y;
cout<<"请依次输入测试点x和y的值:"<<endl;
cin>>x;
cin>>y;
point dian(x,y);
p.isPointInCircle(center,dian);
system("pause");
return 0;
}