C++项目案例圆和点的关系 (涉及知识点:头文件定义类,cpp文件实现类,类和作用域,linux编译运行c++项目)

一.项目描述

点与圆有三种关系:

python 复制代码
点在圆外
点在圆上
点在圆内
python 复制代码
计算点到圆心的距离就能判断点在圆的哪个地方。


二.项目结构

三.include文件

3.1 Circle类的声明

Circle.h

cpp 复制代码
// 防止头文件重复包含
#pragma once
// #include<iostream>
#include "Point.h"
using namespace std;

class Circle
{
public:
    // 设置半径
    void setR(int r);

    //获取半径
    int getR();

    //设置圆心
    void setCenter(Point center);

    Point getCenter();

private:
    int m_R; //半径
    Point m_Center; //圆心
};

3.2 Point类的声明

Point.h

cpp 复制代码
#pragma once
#include<iostream>
using namespace std;

class Point
{
public:
    // 设置x
    void setX(int x);
    void setY(int y);
    
    // 获取y
    int getX();
    int getY();
    
private:
    int m_X;
    int m_Y;
};

四.src文件

4.1 Circle类的定义

Circle.cpp

cpp 复制代码
#include "Circle.h"

// 设置半径
void Circle::setR(int r)
{
    m_R = r;
}
//获取半径
int Circle::getR()
{
    return m_R;
}
//设置圆心
void Circle::setCenter(Point center)
{
    m_Center = center;
}
Point Circle::getCenter()
{
    return m_Center;
}

4.2 Point类的定义

Point.cpp

cpp 复制代码
#include "Point.h"

void Point::setX(int x)
{
    m_X = x;
}
void Point::setY(int y)
{
    m_Y = y;
}

// 获取y
int Point::getX()
{
    return m_X;
}

int Point::getY()
{
    return m_Y;
}

五.main.cpp

cpp 复制代码
#include<iostream>

using namespace std;
#include "Circle.h"
#include "Point.h"


// 判断点和圆的关系
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);
    p.setY(10);

    //判断两者关系
    isInCircle(c,p);
    
    return 0;
}
相关推荐
酸菜。19 分钟前
dw_axi_dmac总结
linux
神奇霸王龙25 分钟前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
C++ 老炮儿的技术栈1 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
qq_448011161 小时前
C语言中的柔性数组
c语言·开发语言·柔性数组
小白学大数据1 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
zlinear数据采集卡2 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
Poo_Chai2 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库
瑞码空间2 小时前
Java 图形界面(GUI)完整知识点手册
java·开发语言·图形界面·swing
小努蛋2 小时前
linux编译openresty异常问题,lua_cjson.c:706:5: 错误: ‘for‘ 循环初始化声明只在 C99 或 C++ 模式下允许
开发语言·lua·openresty
qz_Serene3 小时前
C++:类和对象(上)
开发语言·c++