当前位置: 首页 > news >正文

【C++】封装:练习案例-点和圆的关系

练习案例:点和圆的关系

设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。

思路:

1)创建点类point.hpoint.cpp

2)创建圆类circle.hcircle.cpp

3)点和圆的关系判断void isIncircle(Circle &c,Point &p)

点到圆心的距离 == 圆心 (点在圆上)

点到圆心的距离 < 圆心 (点在圆内)

点到圆心的距离 > 圆心 (点在圆外)

示例代码

我们将点类用point.cpppoint.h实现。将圆类用circle.cppcircle.h实现。

点类头文件point.h

#pragma once
#include<iostream>
using namespace std;
class Point
{
public://设置x坐标void setX(int x);//读取x坐标int getX();//设置y坐标void setY(int y);//读取y坐标int getY();private:int m_x;int m_y;
};

点类代码实现point.c

#include"point.h"//设置x坐标
void Point::setX(int x)
{m_x = x;
}
//读取x坐标
int Point::getX()
{return m_x;
}
//设置y坐标
void Point::setY(int y)
{m_y = y;
}
//读取y坐标
int Point::getY()
{return m_y;
}

圆类头文件circle.h

#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; //圆心};

圆类代码实现circle.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;
}

主文件点和圆的关系.cpp

#include<iostream>
#include"circle.h"
#include"point.h"
using namespace std;
//点和圆的关系案例//判断点和圆的关系
void isIncircle(Circle &c,Point &p)
{//计算两点距离的平方int dist =(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 (dist == rDistance){cout << "点在圆上" << endl;}else if (dist > rDistance){cout << "点在圆外" << endl;}else{cout << "点在圆内" << endl;}
}
int main()
{//创建圆Circle c1;c1.setR(10);Point center;center.setX(10);center.setY(0);c1.setCenter(center);//创建点Point p1;p1.setX(10);p1.setY(9);Point p2;p2.setX(10);p2.setY(10);Point p3;p3.setX(10);p3.setY(11);//判断关系isIncircle(c1, p1);isIncircle(c1, p2);isIncircle(c1, p3);system("pause");return 0;
}

运行结果

我们设置了一个圆,圆心为(10,0),半径为10。
我们设置了三个点(10,9)(10,10)(10,11)。

点在圆内
点在圆上
点在圆外
http://www.lryc.cn/news/262386.html

相关文章:

  • 【vue】正则表达式限制input的输入:
  • 异步导入中使用SecurityUtils.getSubject().getPrincipal()获取LoginUser对象导致的缓存删除失败问题
  • 大数据机器学习深度解读决策树算法:技术全解与案例实战
  • 【开源Mongdb驱动】SpringBoot+Mybatis+Mongdb融合使用教程
  • freeRTOS使用
  • 基于vue的线上点餐系统论文
  • 【Windows】windows11右键默认显示更多选项的办法
  • 推荐使用过很好用的api,含免费次数
  • QT最大线程并发
  • 在金属/绝缘体/p-GaN栅极高电子迁移率晶体管中同时实现大的栅压摆幅和增强的阈值电压稳定性
  • Redis第1讲——入门简介
  • 数据科学知识库
  • 设计模式——责任链模式(行为模式)
  • 【谭浩强C语言:前八章编程题(多解)】
  • 程序人生15年人生感悟
  • React与AJAX
  • C++ STL泛型算法
  • 使用OpenSSL生成PKCS#12格式的证书和私钥
  • 超详细 | 哈里斯鹰优化算法原理、实现及其改进与利用(Matlab/Python)
  • git 切换远程地址分支 推送到指定地址分支 版本回退
  • YOLOv3-YOLOv8的一些总结
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)控件的部分公共属性和事件
  • 最新同步云盘推荐:实现轻松管理与便捷同步的理想选择
  • (第27天)Oracle 数据泵转换分区表
  • 业务上需要顺序消费,怎么保证时序性?
  • ubuntu 开机提示 you are in emergency mode,journalctl -xb
  • 【Hadoop面试】HDFS读写流程
  • B01、JVM与Java体系结构-01
  • Python:Jupyter
  • macos苹果电脑开启tftp server上传fortigate60e固件成功