c++实现四则运算生成器

GIT地址 Link
Git用户名 Redwarx008
学号后五位 61128
博客地址 Link
作业链接 Link

环境配置

使用VS2019社区版,一键式安装,这里不再赘述。

代码思路

程式的接口输入应为字符串类似于"3+5*11"。对字符串依次检索,这里我们使用两个栈,一个存放数字,另一个用以存放操作符。操作符进栈时需与栈顶操作符比较优先级,如果小的话则抛出栈顶操作符进行计算,计算结果进数字栈,依次类推。最终数字栈中的就是计算结果。

下面是类的声明,该类接受一个字符串

该程式接受一个整型控制生成算式的数量

完整代码已上传至githubLink

class cal_data
{
public:
cal_data(string _expr)
:expr(_expr) {
div_str(expr);
}
string& get_str() { return expr; }
private:
string expr;
stack<double> num_stk;
stack<char> oper_stk;
inline bool is_number(char c);
void div_str(string& expr);
string::size_type num_size(string& expr, string::size_type pos);
int oper_priority(char c);
void calculate();
};

至于简单的调试,特别的,可以这样来运行到光标处,十分方便



其余不多赘述

运行结果如下

单元测试

VS中有个非常有用的功能,单元测试。通过单元测试,开发人员和测试人员可以快速的检查C#,.net和c++项目中各个类的方法中是否有逻辑错误。单元测试仅仅需要创建一次,那么在每次更改源代码时候运行,以确保不引入bug。

参考了https://blog.csdn.net/u013299585/article/details/73662526?tdsourcetag=s_pcqq_aiomsg

在同一个解决方案下添加测试项目



测试结果如下

像这种不足两百行的程式,单元测试意义不大,遑论回归测试

提交代码至github

这里参考了这篇文章



要说遇到了哪些问题,写代码还好说,最糟心的就是提交到github了,搞了很久,毕竟万事开头难。

个人第二次作业-c++实现四则运算生成器的更多相关文章

  1. 第二次作业利用java语言编写计算器进行四则运算

    随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...

  2. 结对作业1----基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址:代码点这里 需求分析: 1.除了整数的四则运算还要支持分数的四则运算: ...

  3. 结对作业--基于GUI的四则运算生成器

    组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...

  4. 结对编程1----基于java的四则运算生成器

    小组成员:王震(201421123054).王杰(201421123055) Coding地址:https://git.coding.net/a506504661/sssss.git 一.题目描述 我 ...

  5. C语言程序设计第二次作业--顺序结构

    C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...

  6. MathExam第二次作业

    第二次作业:MathExam 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 30 • ...

  7. 第二次作业&熟悉使用工具

     GIT地址  我的地址  GIT用户名  995020892w  学号后五位  81105  博客地址  我的博客  作业链接  第二次作业 一.环境配置过程 安装vs2017 因为以前学习C#相关 ...

  8. 第二次作业hzw

    第二次作业 | GIT地址 | 地址链接 | |--|--| |GIT用户名 | BRYANT333 | |学号后五位|24240| |博客地址|我的博客| |作业链接|第二次作业地址| 一.环境配置 ...

  9. Lobooi第二次作业:熟悉使用工具

    第二次作业 GIT地址 https://github.com/Lobooi//AchaoCalculator GIT用户名 Lobooi 学号后五位 24235 博客地址 https://home.c ...

随机推荐

  1. linux xz压缩解压

    1. 解压 xz 格式文件 方法一: 需要用到两步命令,首先利用 xz-utils 的 xz 命令将 linux-3.12.tar.xz 解压为 linux-3.12.tar,其次用 tar 命令将 ...

  2. PixelShuffle

  3. Type.MakeGenericType 方法 (Type[]) 泛型反射

    替代由当前泛型类型定义的类型参数组成的类型数组的元素,并返回表示结果构造类型的 Type 对象. 命名空间:   System程序集:  mscorlib(mscorlib.dll 中) public ...

  4. flask + celery实现定时任务和异步

    参考资料: Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/latest ...

  5. Redis启动命令

    Redis的下载地址为https://github.com/MicrosoftArchive/redis/releases,Redis 支持 32 位和 64 位,根据自己的需要下载相应的版本. 下载 ...

  6. 分类属性绘图(seaborn的catplot函数)

    可以通过指定catplot()函数的kind参数为"bar", "box", "violin"等分别绘制以前提过的柱形图,盒图,小提琴图等. ...

  7. java创建多线程实现并行计算任务处理

    1.直接上代码一看明白: package multithreadingTest; class fblib extends Thread{ public static Integer fb(Intege ...

  8. 一个简单的dns服务器

    options { listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; directory "/srv/app/named& ...

  9. [Web 前端] 028 jQuery 事件

    目录 jQuery 的事件 1. 事件绑定 1.1 事件的获取 1.2 基本绑定 1.3 动态绑定 2. 事件触发 2.1 触发的写法 2.2 常用的鼠标事件 3. 事件冒泡和默认行为 3.1 事件冒 ...

  10. 【监控笔记】【1.1】监控事件系列——SQL Server Profiler

    声明:本系列是书目<sql server监控与诊断读书笔记> 联机丛书监控:https://docs.microsoft.com/en-us/sql/relational-database ...