C++点与圆的位置(直角坐标系) 分为3种情况
点在圆内
点在圆外
点在圆上
#include<iostream>
#include<string>
using namespace std;
class point { //点类
private:
int x; //横纵坐标
int y;
public:
int getx() { return x; }
int gety() { return y; }
void setx(int temp) { x = temp; }
void sety(int temp) { y = temp; }
};
class circle { //圆类
private:
int r; //半径
point center;
public:
int getr() { return r; }
void setr(int temp) { r = temp; }
point getcenter() { return center; }
void setcenter(point t1) { center = t1; }
};
void contrast(circle c1, point p1) { //比较
int a = (c1.getcenter().getx() - p1.getx()) * (c1.getcenter().getx() - p1.getx()) +
(c1.getcenter().gety() - p1.gety()) * (c1.getcenter().gety() - p1.gety());
// 距离的平方
if (a > c1.getr() * c1.getr())
cout << "点在圆外" << endl;
else if (a == c1.getr() * c1.getr())
cout << "点在圆上" << endl;
else if (a < c1.getr() * c1.getr())
cout << "点在圆内" << endl;
}
int main() {
circle c1;
point p1;
int temp;
point tempp;
cout << "请输入圆心位置(先x后y)" << endl;
cin >> temp;
tempp.setx(temp);
cin >> temp;
tempp.sety(temp);
c1.setcenter(tempp);
cout << "圆心坐标:"<<c1.getcenter().getx()<<"\t" << c1.getcenter().gety() << endl;
cout << "请输入半径大小" << endl;
cin >> temp;
c1.setr(temp);
cout << "半径大小为:" << c1.getr()<<endl;
cout << "请输入点的位置(先x后y)" << endl;
cin >> temp;
p1.setx(temp);
cin >> temp;
p1.sety(temp);
cout << "点的位置:" << p1.getx() << "\t" << p1.gety() << endl;
contrast(c1, p1);
}
更多编程题目请关注公众号:蛋蛋大朋友