C++实现设计一个圆形类(Circle),和一个点类(Point), 计算并判断点和圆的位置关系

题目要求


设计一个圆形类(Circle),和一个点类(Point),
计算并判断点和圆的位置关系。



无分区版 :

#include <iostream>
using namespace std;

//设置 点 类
class Point
{
private:
    int p_x;
    int p_y;

public:
    //设置横坐标
    void setX(int x){
        p_x = x;
    }
    //设置纵坐标
    void setY(int y){
        p_y = y;
    }
    //输出横坐标
    int showX(){
        return p_x;
    }
    //输出纵坐标
    int showY(){
        return p_y;
    }
};

//设置 圆 类
class Circle
{
private:
    //设置圆心
    Point center;
    //设置半径
    int c_R;

public:
    //设置圆心
    void setCenter(Point c){
        center = c;
    }
    //设置半径
    void setR(int r){
        c_R = r;
    }
    //输出圆心(要用Point类型返回圆心)
    Point showCenter(){
        return center;
    }
    //输出半径
    int showR(){
        return c_R;
    }
};

//全局函数判断点和圆的关系
void isInCircle(Circle &c , Point &p){
    //利用两点之间距离公式 与 圆的半径进行比较(可以两边都平方)
    int squareDistance = (c.showCenter().showX() - p.showX()) * (c.showCenter().showX() - p.showX()) +
            (c.showCenter().showY() - p.showY()) * (c.showCenter().showY() - p.showY());

    int radius = c.showR();

    if(squareDistance == radius * radius){
        cout<<"点在圆上"<<endl;
    }else if(squareDistance < radius * radius){
        cout<<"点在圆内"<<endl;
    } else if (squareDistance > radius * radius){
        cout<<"点在圆外"<<endl;
    }
}

int main(){

    //定圆心
    Point cc;
    cc.setX(10);
    cc.setY(0);

    //定圆心,半径
    Circle c;
    c.setR(10);
    c.setCenter(cc);

    //定平面内一点
    Point p;
    p.setX(10);
    p.setY(9);

    //判断 点 与 圆 的位置关系
    isInCircle(c,p);

}


分区版:

  • 分区区间 :
    在这里插入图片描述

  • point.h :

#pragma once
#include<iostream>
using namespace std;

//设置 点 类
class Point
{
private:
    int p_x;
    int p_y;

public:
    //设置横坐标
    void setX(int x);
    //设置纵坐标
    void setY(int y);
    //输出横坐标
    int showX();
    //输出纵坐标
    int showY();
};

  • point.cpp :
#include "point.h"


//设置横坐标
void Point::setX(int x) {
    p_x = x;
}
//设置纵坐标
void Point::setY(int y) {
    p_y = y;
}
//输出横坐标
int Point::showX() {
    return p_x;
}
//输出纵坐标
int Point::showY() {
    return p_y;
}

  • circle.h :
#pragma once
#include <iostream>
#include "point.h"
using namespace std;
//设置 圆 类
class Circle
{
private:
    //设置圆心
    Point center;
    //设置半径
    int c_R;

public:
    //设置圆心
    void setCenter(Point c);
    //设置半径
    void setR(int r);
    //输出圆心(要用Point类型返回圆心)
    Point showCenter();
    //输出半径
    int showR();
};

  • circle.cpp
#include "circle.h"

//设置圆心
void Circle::setCenter(Point c) {
    center = c;
}
//设置半径
void Circle::setR(int r) {
    c_R = r;
}
//输出圆心(要用Point类型返回圆心)
Point Circle::showCenter() {
    return center;
}
//输出半径
int Circle::showR() {
    return c_R;
}

  • 主函数.cpp
#include "point.h"
#include "circle.h"

//全局函数判断点和圆的关系
void isInCircle(Circle& c, Point& p) {
    //利用两点之间距离公式 与 圆的半径进行比较(可以两边都平方)
    int squareDistance = (c.showCenter().showX() - p.showX()) * (c.showCenter().showX() - p.showX()) +
        (c.showCenter().showY() - p.showY()) * (c.showCenter().showY() - p.showY());

    int radius = c.showR();

    if (squareDistance == radius * radius) {
        cout << "点在圆上" << endl;
    }
    else if (squareDistance < radius * radius) {
        cout << "点在圆内" << endl;
    }
    else if (squareDistance > radius * radius) {
        cout << "点在圆外" << endl;
    }
}

int main() {

    //定圆心
    Point cc;
    cc.setX(10);
    cc.setY(0);

    //定圆心,半径
    Circle c;
    c.setR(10);
    c.setCenter(cc);

    //定平面内一点
    Point p;
    p.setX(10);
    p.setY(10);

    //判断 点 与 圆 的位置关系
    isInCircle(c, p);

}


参考资料 :

https://www.bilibili.com/video/BV1et411b73Z

  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值