天天看点

C++点与圆的位置(直角坐标系)

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);
}
           

更多编程题目请关注公众号:蛋蛋大朋友

继续阅读