案例2:点和圆的关系

点和圆的关系
设计一个圆形类(Circle)和一个点类(Point),计算点和圆的关系
思路分析:点在圆外—半径<点到圆心距离
点在圆上—半径==点到圆心距离
点在圆内—半径>点到圆心距离
用点到圆心的距离公式的平方和半径的平方相比较
设计圆类和点类,对于圆类,属性——圆心,半径
对于点类,属性——x坐标,y坐标代码如下

#include<iostream>

using namespace std;

class Point

{public:

        void setX(int x)  //设置x坐标

        {

               m_X = x ;

        }

        int getX()   //获取x坐标

        {

               return m_X ;

        }

        void setY(int y)  //设置y的坐标

        {

               m_Y = y;

        }

        int getY()   //获取y的坐标

        {

               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;1//圆心,x坐标,y坐标是一个整体,是一个点,所以创建点这样一个类
};

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;

        }

        else

        {

               cout << "点在圆内" << endl;

        }

}

int main()

{

        Circle c;

        c.setR(10);                                           
        

       Point center;       //利用点这个类创建一个点                                
       center.setX(10);

        center.setY(0);

       c.setCenter(center);   

        Point p;

        p.setX(10);  //自己设定x坐标

        p.setY(10);  //自己设定y坐标

        isInCircle(c, p);

        

        system("pause");

        return 0;

}

在这里插入图片描述

设定圆心为(10,0),然后根据自己设定的点的坐标进行判断
总结:在类中可以让另一个类作为本类中的成员,即(1)处

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值