c++类和对象例题(判断点与圆的位置关系)

目录

1.问题分析

2.例图

3.代码实现


1.问题分析

如果要判断点与圆的关系,首先需要创建一个圆类和一个点类。圆类中要包含数据成员:半径和数据成员圆心,点类中要包含数据成员:点的x坐标和y坐标。

2.例图

 如图,建立了一个圆心为(10,0),半径为10的圆,和一个坐标为(10,10)的点p,并判断点p与圆心的关系。

3.代码实现

先创建一个点类,并用成员函数实现设置和获取点的坐标

class Point {
	public:
		//设置x,y 
		void set_X(int x){
			m_X=x;
		}
		void set_Y(int y){
			m_Y=y;
		} 
		//获取x,y 
		int get_X(){
			return m_X;
		}
		int get_Y(){
			return m_Y;
		}
	private:
		int m_X;
		int m_Y;
};

再创建一个圆类,并用成员函数实现设置和获取圆心和半径。其中圆心也为点类,是使用另一个类作为本类的一个成员。

class Circle {
	public:
		//设置半径和圆心 
		void set_R(int r){
			m_R=r;
		}
		void set_Center(Point center){
			m_Center=center;
		}
		//获取半径和圆心 
		int get_R(){
			return m_R;
		}
		Point get_Center(){
			return m_Center;
		}
	private:
		int m_R;
		Point m_Center;
};

之后再用一个函数来判断点与圆的位置关系

void isInCircle(Circle &c,Point &p){
	 
	int distance =
	(c.get_Center().get_X() - p.get_X()) * (c.get_Center().get_X() - p.get_X()) + 
	(c.get_Center().get_Y() - p.get_Y()) * (c.get_Center().get_Y() - p.get_Y());
	
	int r_R = c.get_R() * c.get_R();
	
	if(distance = r_R) cout<<"点在圆上"<<endl;
	else if(distance>r_R) cout<<"点在圆外"<<endl;
	else if(distance<r_R) cout<<"点在圆内"<<endl;
}

主函数,传入参数,判断点与圆的位置关系。

int main() {
	Circle c1;
	c1.set_R(10);
	Point center;
	center.set_X(10);
	center.set_Y(0);
	c1.set_Center(center);
	
	Point p;
	p.set_X(10);
	p.set_Y(10);
	
	isInCircle(c1,p);    
	return 0;
}

编译运行

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值