设计一个圆类,并判断某点和圆的位置关系
//类的嵌套:让另一个类作为本类的成员
#include<iostream>
using namespace std;
//创建点类
class Point
{
public:
//设置xy
void setXY(int x,int y)
{
m_X=x;
m_Y=y;
}
//获得x
int getX()
{
return m_X;
}
//获得y
int getY()
{
return m_Y;
}
private:
int m_X;
int m_Y;
};
//创建圆类
class Circle
{
public:
//设置半径
void setR(int r)
{
m_R=r;
}
//获取半径
int getR()
{
return m_R;
}
//设置圆心
void setCenter(Point c)
{
m_Center=c;
}
//获取圆心
Point getCenter() //易错1:返回值类型是point类。易错2:Point要大写和前面保持一致
{
return m_Center;
}
private:
int m_R;
Point m_Center;
}; //易错:类的结尾要分号
void Locate(Point &p,Circle &c)
{
//计算点到圆心的距离平方、半径的平方
int Distancesquare=(c.getCenter().getX()-p.getX())*(c.getCenter().getX()-p.getX())+(c.getCenter().getY()-p.getY())*(c.getCenter().getY()-p.getY());
int Rsquare=c.getR()*c.getR();
//判断位置
if(Distancesquare>Rsquare)
cout<<"点在圆外"<<endl;
else
if(Distancesquare==Rsquare)//易错:=号要写两个
cout<<"点在圆上"<<endl;
else
cout<<"点在圆内"<<endl;
}
void main()
{
//创建点、圆对象
Point p;
Circle c;
//初始化点、圆
p.setXY(1,0);
c.setR(1);
//创建圆心
Point center; //圆心是个点,因此需要先创建一个点作为圆心,然后把这个点传进圆内
//初始化圆心
center.setXY(0,0);
//圆心传入圆对象
c.setCenter(center);
//调用函数判断点和圆的位置关系
Locate(p,c);
}