c++ 判断点和圆位置关系(类的声明和类的实现分开)

Point.h:

#pragma once
class Point
{
private:
double p_x, p_y;
public:
void setXY(double x,double y);
double getx();
double gety();
};

 AdvCircle.h:

#pragma once
#include "Point.h"
class AdvCircle
{
private:
double m_x, m_y,m_r;
public:
void set(double x, double y,double r);
int judge(Point p);
};

Point.cpp:

#include "Point.h"

void Point::setXY(double x, double y) {
p_x = x;
p_y = y;
}
double Point::getx() {
return p_x;
}
double Point::gety() {
return p_y;
}

AdvCircle.cpp:

#include "AdvCircle.h"
#include "cmath"

void AdvCircle::set(double x, double y,double r) {
m_x = x;
m_y = y;
m_r = r;
}

int AdvCircle::judge(Point p) {
double dis = hypot(m_x-p.getx(),m_y-p.gety());
if (dis > m_r) return 1;//圆外
else if (dis == m_r) return 2;//圆上
else if (dis < m_r) return 3;//圆内
}

Circle_relation_point.cpp:

#include <iostream>
#include"Point.h"
#include"AdvCircle.h"

using namespace std;

int main()
{
Point p; AdvCircle c1;
double x, y,r;
int jud;
cout << "请输入点的x坐标:" << endl;
cin >> x;
cout << "请输入点的y坐标:" << endl;
cin >> y;
p.setXY(x, y);
cout << "请输入圆心的x坐标:" << endl;
cin >> x;
cout << "请输入圆心的y坐标:" << endl;
cin >> y;
cout << "请输入圆心的半径:" << endl;
cin >> r;
c1.set(x, y, r);
jud = c1.judge(p);
if (jud == 1) cout << "点在圆外" << endl;
else if (jud == 2) cout << "点在圆上" << endl;
else if (jud == 3) cout << "点在圆内" << endl;
system("pause");
}

 

posted @ 2019-06-05 15:32  稳健的咖啡豆  阅读(1146)  评论(0编辑  收藏  举报