创建点类,圆类。 将其属性都设置为私有,并提供固定公共接口可以对其值进行修改。 原理就是坐标系中两点距离的判断。
#include <iostream> using namespace std; //点和圆关系案例 //点类 class Point { public: //设置X坐标 void setX(int x) { m_X = x; } //获取X坐标 int getX() { return m_X; } //设置Y坐标 void setY(int y) { m_Y = y; } //获取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 center) { m_Center = center; } //获取圆心 Point getCenter() { return m_Center; } private: int m_R;//半径 Point m_Center;//圆心 }; //判断点和圆的关系 void isInCircle(Circle &c, Point &p) { //计算两点距离的平方 int distance = (c.getCenter().getX() - p.getX())*(c.getCenter().getX() - p.getX()) + (c.getCenter().getY() - p.getY())*(c.getCenter().getY() - p.getY()); //计算半径的平方 int distanceR = c.getR() * c.getR(); //比较两者的平方,从而判断出其关系 if(distance==distanceR) { cout << "点在圆上 " << endl; } else if (distance > distanceR) { cout << "点在圆外 " << endl; } else { cout << "点在圆内 " << endl; } } int main() { //创建圆 Circle c; int cR; cout << "请输入圆的半径 " << endl; cin >> cR; c.setR(cR); Point center; center.setX(cR);//在此坐标系中圆心的横坐标就是半径的值 center.setY(0); c.setCenter(center); //创建点 Point p; int px; cout << "请输入点的横坐标 " << endl; cin >> px; int py; cout << "请输入点的纵坐标" << endl; cin >> py; p.setX(px); p.setY(py); //判断关系 isInCircle(c, p); system("pause"); return 0; }