题目描述
设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。
源码
#include<iostream>
using namespace std;
//一个用来求解距离的平方的全局函数
int distance(int a, int b, int c, int d) {
return (abs(a - c) * abs(a - c) + abs(b - d) * abs(b - d));
}
class point {
public:
void setX(int x) {
p_x = x;
}//写入点的X坐标
void setY(int y) {
p_y = y;
}//写入点的Y坐标
int getX() {
return p_x;
}//因为我们已经规定了p.p_x从外部是不能访问的,所以必须要定义一个这样的函数来访问p的x坐标
int getY() {
return p_y;
}
private:
int p_x;
int p_y;
}p;
class circle {
public:
void setR(int r) {
c_r = r;//写入圆的半径
}
void setCenter(point center) {
c_center = center;//设置圆的圆心
}
int getR() {
return c_r;
}
void judgePos(point&p) {
int a = distance(p.getX(), p.getY(), c_center.getX(), c_center.getY());
if (a > c.getR() * c.getR()) {
cout<<"点在圆外";
}
else if (a== c.getR() * c.getR())
cout<<"点在圆上";
else
cout<<"点在圆内";
}//判断点和圆的位置关系的成员函数
//记得加引用记号
private:
int c_r;//半径
point c_center;//圆心
}c;
int main() {
//先输入点的x,y坐标,再输入圆心的x,y坐标
//最后输入圆的半径
int x1, y1, x2, y2, r;
cin >> x1 >> y1 >> x2 >> y2 >> r;
p.setX(x1);
p.setY(y1);
point Center;
Center.setX(x2);
Center.setY(y2);
c.setCenter(Center);
c.setR(r);
c.judgePos(p);
return 0;
}