#include <iostream> using namespace std; //根据点到圆心距离来判断 //点和园关系 //点类 class Circle { public: //设置x; void setx(int x) { m_x=x; } //获取x; void getx() { return x; } //设置y; void sety(int y) { m_y=y; } //获取y; void gety() { return y; } private: int m_x; //半径 int m_y; }; //圆类 class Circle { public: //设置半径 void setr(int r) { m_r=r; } //获取半径 void getr() { return m_r; } //设置圆心 void setcenter(Point center) { m_center=center; } //获取圆心 Point getcenter() { return m_center; } private: int m_r; //半径 Point m_center; //圆心----->在类中可以让另一个类作为本来中的成员 }; //判断点和圆关系 void isisInCircle(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 rdistance = c.getr()*c.getr(); //判断关系 if(distance == rdistance) { cout <<"点在圆上" <<endl; } else if(distance > rdistance) { cout <<"点在圆外" <<endl; } else { cout <<"点在圆内" <<endl; } } int main() { //创建圆 Circle c; c.setr(10); Point center; center.setx(10); center.sety(0); c.setcenter(center); //创建点 Point p; p.setx(10); p.sety(10); //判断关系 isisInCircle(c,p); system("pause"); return 0; }
由于在开发时类中类代码过于不便,采取多个文件写项目
(1)首先创建一个头文件,留住函数的声明及变量即可。
#pragma once //防止头文件重复包含 #include <iostream> using namespace std; //根据点到圆心距离来判断 //点和园关系 //点类 class Circle { public: //设置x; void setx(int x); //获取x; void getx(); //设置y; void sety(int y); //获取y; void gety(); private: int m_x; //半径 int m_y; };
(2)写一个分源文件编写实现代码
#include "ppoint.h" //设置x; void Point::setx(int x) //由于是Point类中的成员函数,需要加上Point类作用域 { m_x=x; } //获取x; void Point::getx() { return x; } //设置y; void Point::sety(int y) { m_y=y; } //获取y; void Point::gety() { return y; }
(3)Circle 类拆分文件同理如上。
(4)最后文件如下
#include <iostream> using namespace std; #include "point.h" #include "circle.h" //判断点和圆关系 void isisInCircle(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 rdistance = c.getr()*c.getr(); //判断关系 if(distance == rdistance) { cout <<"点在圆上" <<endl; } else if(distance > rdistance) { cout <<"点在圆外" <<endl; } else { cout <<"点在圆内" <<endl; } } int main() { //创建圆 Circle c; c.setr(10); Point center; center.setx(10); center.sety(0); c.setcenter(center); //创建点 Point p; p.setx(10); p.sety(10); //判断关系 isisInCircle(c,p); system("pause"); return 0; }