

#include <iostream>
#include <string>
using namespace std;/*
**练习案例2:点和圆的关系**设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。解题思路:
1.圆形和点之间的关系有3种,点在圆形内,点与圆形重合,点在圆形外。
2.圆类如何取坐标、点如何取坐标
3.圆类的属性组成,半径、中心在原点的坐标;点的属性组成,点在空间内的坐标;
4.点类的坐标;
5.点与圆之间关系的判断,进行坐标值之间的判断;*/
//点类
class Point
{
private:int p_x;int p_y;public:void set_p_x(int x) {p_x = x;}void set_p_y(int y) {p_y = y;}int get_p_x() {return p_x;}int get_p_y() {return p_y;}
};
class Circle
{
private:int c_r;//半径Point c_center;//圆心public:void set_c_r(int r) {c_r = r;}int get_c_r() {return c_r;}//设置圆心void set_Circle_Center(Point p) {c_center = p;}//返回圆心Point get_Circle_Center() {return c_center;}};// 判断圆心和点之间的关系
void check_Point_C(Circle &c,Point &p) {//两点之间距离的平方int distance = (c.get_Circle_Center().get_p_x() - p.get_p_x()) * (c.get_Circle_Center().get_p_x() - p.get_p_x()) + (c.get_Circle_Center().get_p_y() - p.get_p_y()) * (c.get_Circle_Center().get_p_y() - p.get_p_y());//半径的平方int c_r_ = c.get_c_r() * c.get_c_r();if ( distance > c_r_ ){cout << "点在圆外" << endl;} else if (distance == c_r_ ){cout << "点在圆行上" << endl;}else if (distance < c_r_){cout << "点在圆内" << endl;}
}int main() {// 创建一个圆心坐标为(10,10),半径为10的圆形Circle c1;Point p1; //圆心的点坐标p1.set_p_x(10);p1.set_p_y(10);//设置圆心坐标c1.set_Circle_Center(p1);c1.set_c_r(10);//创建点的坐标Point p2; p2.set_p_x(100);p2.set_p_y(100);check_Point_C(c1, p2);system("pause");return 0;}
