练习案例2:点和圆的关系
设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系(圆上、圆外、圆内)。
例程如下:
#include<iostream>
#include<string>
using namespace std;//一个点类(Point)
class Point
{public://设置x坐标void setX(int x){p_x = x;}//获取x坐标int getX(){return p_x;}//设置y坐标void setY(int y){p_y = y;}//获取y坐标int getY(){return p_y;}private:int p_x;int p_y;
};//设计一个圆类Circle
class Circle
{public://设置半径Rvoid setR(int r){R = r;}//获取半径Rint getR(){return R;}//设置圆心void setCenter(Point center){c_center = center;}//获取圆心Point getCenter()//c_center是Piont类的数据{return c_center;}private:int R;//在类中可以让另一个类 作为本类中的成员--与结构体相似Point c_center;};//判断点和圆的关系
void isInCircle(Circle &c, Point &p)
{if ((p.getX() - c.getCenter().getX()) * (p.getX() - c.getCenter().getX()) + (p.getY() - c.getCenter().getY()) * (p.getY() - c.getCenter().getY()) == c.getR() * c.getR())cout << "点在圆上" << endl;else if ((p.getX() - c.getCenter().getX()) * (p.getX() - c.getCenter().getX()) + (p.getY() - c.getCenter().getY()) * (p.getY() - c.getCenter().getY()) > c.getR() * c.getR())cout << "点在圆外" << endl;elsecout << "点在圆内" << endl;
}int main()
{//创建并设置点P1Point P1;P1.setX(10);P1.setY(9);//创建并设置点P2--圆心Point P2;P2.setX(10);P2.setY(0);//设置圆C1Circle C1;C1.setR(10);C1.setCenter(P2);isInCircle(C1, P1);system("pause");return 0;
}