牛客网——点与圆的关系

题目

题目链接
在这里插入图片描述

分析

写一个函数,能判断输入的点和圆的关系。
没考察什么语法,就是调用函数判断,很简单。
注意:计算的dis是(x1-x2)2+(y1-y2)2,因此和圆的半径判断的时候,是和半径的平方判断。

void isPointerInCircle(Pointer p){
            double dis=(p.getX()-center.getX())*(p.getX()-center.getX())+(p.getY()-center.getY())*(p.getY()-center.getY());
            if(dis==radius*radius){
                cout<<"on"<<endl;
                return;
            }
            if(dis>radius*radius){
                cout<<"out"<<endl;
                return;
            }
            cout<<"in"<<endl;
            return;
        }

代码

#include <iostream>
using namespace std;

// 点类
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;
        }

        // write your code here......
        void isPointerInCircle(Pointer p){
            double dis=(p.getX()-center.getX())*(p.getX()-center.getX())+(p.getY()-center.getY())*(p.getY()-center.getY());
            if(dis==radius*radius){
                cout<<"on"<<endl;
                return;
            }
            if(dis>radius*radius){
                cout<<"out"<<endl;
                return;
            }
            cout<<"in"<<endl;
            return;
        }

};

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MORE_77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值