#include <iostream> using namespace std; //封装设计案例-点和圆的关系 //因为圆的属性-圆心 和 点都是坐标,所以设计一个坐标类 class coordinate{ private: float x;//坐标x float y;//坐标y public: void setx(float X)//设置坐标x { x=X; } void sety(float Y)//设置坐标y { y=Y; } float getx()//获取坐标x { return x; } float gety()//获取坐标y { return y; } }; //设计圆类 class circle{ private: float r;//半径 coordinate c1;//圆心 public: void setr(float R)//设置半径 { r=R; } void setc(coordinate &C) //设置圆心 { c1=C;//c1.x=C.x //c1.y=C.y } float getr()//获取半径 { return r; } coordinate getc1()//获取圆心 { return c1; } }; //全局函数判断点和元的关系 void is_incircle(coordinate &m,circle &c) { float d=(m.getx()-c.getc1().getx())*(m.getx()-c.getc1().getx())+(m.gety()-c.getc1().gety())*(m.gety()-c.getc1().gety()); if(d==c.getr()*c.getr()) { cout<<"点在圆上"<<endl; } else if(d>c.getr()*c.getr()) { cout<<"点在圆外"<<endl; } else { cout<<"点在圆内"<<endl; } } int main(int argc, char** argv) { coordinate m;//创建点对象 m.setx(10);//设置x坐标 m.sety(9);//设置y坐标 coordinate M;//创建圆心的点 M.setx(10);//圆心x坐标 M.sety(0); //圆心y坐标 circle c;//创建圆对象 c.setr(10);//设置半径 c.setc(M);//创建圆心 //调用判断函数 is_incircle(m,c); return 0; }