类和对象-封装-设计案例2-点和圆的关系

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
class Point{
	public:
		//设置X
		void setX(int x){
			m_X=x;
		} 
		//获取X
		int getX(){
			return m_X;
		}
		//设置Y
		void setY(int y){
			m_Y=y;
		} 
		//获取Y 
		int getY(){
			return m_Y;
		}
	private: 
		int m_X;
		int m_Y;
}; 
class Circle{
	public:
	//设置半径
	void setR(int r){
		m_R=r;
	} 
	//获取半径
	int getR(){
		return m_R;
	}
	//设置圆心
	void setCenter(Point center){
		m_Center=center;
	} 
	//获取圆心 
Point getCenter(){
		return m_Center;
	}
	private:
		int m_R;//半径
		Point m_Center;//圆心 
};
//判断点和圆的关系
void isInCircle(Circle &c,Point p){
	//计算两点之间距离的平方
	int distance=
	(c.getCenter().getX()-p.getX())*(c.getCenter().getX()-p.getX())+
	(c.getCenter().getY()-p.getY())*(c.getCenter().getY()-p.getY());
	//计算半径的平方
	int rDistance=c.getR()*c.getR();
	//判断关系 
	if(distance==rDistance){
		cout<<"点在圆上"<<endl; 
	}
	else if(distance>rDistance){
		cout<<"点在圆外"<<endl; 
	}
	if(distance<rDistance){
		cout<<"点在圆内"<<endl; 
	}
} 
int main(){
	//创建圆
	Circle c;
	c.setR(10);
	Point center;
	center.setX(10);
	center.setY(0);
	c.setCenter(center); 
	//创建点
	Point p;
	p.setX(8);
	p.setY(8);
	//判断关系 
	isInCircle(c,p);
	return 0; 
}
  • 首先,定义了两个类:Point(点)和Circle(圆)。Point类包含了一个点的坐标信息,而Circle类包含了圆的半径和圆心(使用了Point类的对象表示)。每个类都有一些公有的方法用于设置和获取相关的属性。

  • 然后,在main()函数中创建了一个圆对象c和一个点对象p,并设置它们的相关属性。圆的半径设置为10,圆心的坐标为(10, 0),点的坐标为(8, 8)。

  • 接下来,通过isInCircle()函数判断点p与圆c的位置关系。这个函数接受一个圆对象和一个点对象作为参数,首先计算了点到圆心的距离的平方,然后与圆半径的平方进行比较,以确定点与圆的位置关系。根据距离的比较结果输出相应的信息,如点在圆上、圆内或圆外。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值