题解 | #点和圆的关系#

点和圆的关系

https://www.nowcoder.com/practice/fdbbd0aaf89f49818e9ee1afb02deb10

#include <climits>
#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......
        /*
        要判断一个点是否在圆上或者圆里面,可以通过计算该点到圆心的距离与圆的半径进行比较来实现。具体步骤如下:

确定圆的参数:需要知道圆的圆心坐标(a, b)和半径r。
计算距离:计算给定点P的坐标(x1, y1)到圆心的距离d,使用公式 d = √((x1-a)² + (y1-b)²)。
比较距离:
如果 d < r,即 (x1-a)² + (y1-b)² < r²,则点P在圆内。
如果 d = r,即 (x1-a)² + (y1-b)² = r²,则点P在圆上。
如果 d > r,即 (x1-a)² + (y1-b)² > r²,则点P在圆外。
总之,通过上述步骤可以判断点是否在圆上或圆内。此外,如果需要判断两个点是否同时在圆内,可以分别对这两个点应用上述方法,只有当两点都在圆内时,才能得出两点均在圆内的结论。
        */
       void isPointerInCircle(Pointer p){
        int x1 = p.getX();
        int y1 = p.getY();
        int a = center.getX();
        int b = center.getY();
        int d = ((x1-a)*(x1-a))+((y1-b)*(y1-b));
        if (d<radius*radius) {
            cout<<"in";
        }
        else if (d==radius*radius) {
            cout<<"on";
        }
        else 
            cout<<"out";
        }
};

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;
}

全部评论

相关推荐

牛客42327521...:在你没来公司之前你们公司连登录功能都没做?让一个实习生做登录页面?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务