牛客网基础C++编程-点和圆的位置关系

牛客网基础C++编程-点和圆的位置关系

描述
有圆类(Circle)和点类(Pointer),在圆类中实现一个 isPointerInCircle方法,该方法传入一个点类对象,判断点和圆的关系,并在该方法中输出。

对两个类进行定义

  • 点类(Pointer):
    成员变量:x轴坐标(int x) y轴坐标(int y)
    成员方法:成员变量的公共访问方法
  • 圆类(Circle):
    成员变量:圆心(Point center) 半径(int radius)
    成员方法:成员变量的公共访问方法 判断点和圆关系的方法(isPointerInCircle)

输入描述:
键盘输入两个整数,分别是点的 x 坐标和 y 坐标(圆的参数已经给定)
输出描述:
圆类中实现 isPointInCircle 方法,在该方法中输出点和圆的关系,
如果点在圆外,则输出“out”;
如果点在圆上,则输出“on”;
如果点在圆内,则输出“in”。

分析:
点和圆的关系有三种,要想判断点和圆的关系,就要判断点到圆心的距离和圆半径radius的关系,用dist来表示点到圆心的距离,为了方便计算,可以直接用法勾股定理算出距离的平方,再和半径的平方进行比较
1.点在圆外:dist^2 > radius^2
2.点在圆上:dist^2 == radius^2
3.点在圆内:dist^2 < radius^2
其中,用到了< cmath >中的pow()函数, pow(base, exp )作用是求base的exp次幂

#include <iostream>
using namespace std;
#include <cmath>

// 点类
class Pointer {

    private:
        int x;  // x 坐标
        int y;  // y 坐标

    public:
        void setX(int x) {
            this->x = x;
        }

        int getX() {
            return x;
        }

        void setY(int y) {
            this->y = y;
        }

        int getY() {
            return y;
        }

};

// 圆类
class Circle {

    private:
        Pointer center; // 圆心
        int radius; // 半径

    public:
        void setCenter(int x, int y) {//设置圆心
            center.setX(x);
            center.setY(y);
        }

        void setRadius(int radius) {//设置半径
            this->radius = radius;
        }
    
        void isPointerInCircle(Pointer pointer){//判断点和圆的关系
            int dist=pow(pointer.getX()-center.getX(),2)+pow(pointer.getY()-center.getY(),2);//点到圆心距离的平方
            if(dist==pow(radius,2)){//点在圆上
                cout<<"on"<<endl;
            }
            else if(dist<pow(radius,2)){//点在圆内
               cout<<"in"<<endl;
            }
            else{//点在圆外
                cout<<"out"<<endl;
            }
        }

};

int main() {

    // 键盘输入点的坐标
    int x, y;
    cin >> x;
    cin >> y;

    // 创建一个点
    Pointer p;
    p.setX(x);
    p.setY(y);

    // 创建一个圆
    Circle c;
    c.setCenter(5, 0);
    c.setRadius(5);

    // 判断点和圆的关系
    c.isPointerInCircle(p);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值