点到圆心的距离公式也就是两点间距离公式:
将类和main文件都写在一个文件中
using namespace std;
//点类
class Point{
public:
//设置一个点的坐标
void setXY(int x, int y){
m_x = x;
m_y = y;
}
int getX(){
return m_x;
}
int getY(){
return m_y;
}
private:
int m_x; // 点的x轴坐标
int m_y; // 点的y轴坐标
};
//圆 类
class Circle{
public:
//设置坐标
void setXY(int x, int y){
m_x = x;
m_y = y;
}
//设置半径
void setR(int r){
m_r = r;
}
//如果true 代表点在圆的内部
bool judgePoint(Point& p){
int d = (p.getX() - m_x) * (p.getX() - m_x) + (p.getY() - m_y) * (p.getY() - m_y);
if (d > m_r * m_r) {
return false;
} else {
return true;
}
}
private:
int m_x; // 圆心的 x轴坐标
int m_y; // 圆心的 y轴坐标
int m_r; // 圆的半径
};
int main(void){
Circle *circle = new Circle();
Point *point = new Point();
circle -> setXY(2, 2);
circle -> setR(4);
point -> setXY(5, 4);
if (circle -> judgePoint(*point) == true) {
cout << "点在圆的内部" << endl;
} else {
cout << "点在圆的外部" << endl;
}
delete circle;
delete point;
}
将类和main分开成多个文件:
Circle.h文件
#pragma once
#include "Point.h"
//圆 类
class Circle{
public:
//设置坐标
void setXY(int x, int y);
//设置半径
void setR(int r);
//如果true 代表点在圆的内部
bool judgePoint(Point& p);
private:
int m_x;
int m_y;
int m_r;
};
Point.h文件
#pragma once
class Point{
public:
//设置一个点的坐标
void setXY(int x, int y);
int getX();
int getY();
private:
int m_x;
int m_y;
};
Circle.cpp文件
void Circle::setXY(int x, int y)
{
m_x = x;
m_y = y;
}
//设置半径
void Circle::setR(int r)
{
m_r = r;
}
//如果true 代表点在圆的内部
bool Circle::judgePoint(Point& p)
{
int dd = (p.getX() - m_x) * (p.getX() - m_x) + (p.getY() - m_y) * (p.getY() - m_y);
if (dd > m_r * m_r) {
return false;
}
else {
return true;
}
}
Point.cpp文件
//设置一个点的坐标
void Point::setXY(int x, int y){
m_x = x;
m_y = y;
}
int Point::getX(){
return m_x;
}
int Point::getY(){
return m_y;
}
main.cpp文件
using namespace std;
int main(){
Circle* circle = new Circle();
Point* point = new Point();
circle->setXY(2, 2);
circle->setR(4);
point->setXY(5, 4);
if (circle->judgePoint(*point) == true) {
cout << "点在圆的内部" << endl;
}
else {
cout << "点在圆的外部" << endl;
}
delete circle;
delete point;
}