作业代码

https://github.com/How-Come/object-oriented/tree/master/Calculator

一、解题思路

1、Scan类

这次题目的难点在于如何将输入的字符串分开排列。

  • (1)首先,要使用条件语句将数字或小数点与符号区分开。
  • (2)其次,如果是数字的话,要将数值连接在一起输出。所以用>string定义一个字符串来储存数值(好处在于可以将数字连接起来)。
  • (3)鉴于题目要求当一个数的位数超过10位时报错,所以用>int定义一个值来纪录每一个数的数值,当超过限制的位数时报错。
  • (4)在队列的排队过程中,运用符号判定来判断是否将其值>push入队:若为符号位,根据前面>string所定义的字符串来判断符号前面是否有数字,若有,>push入队,并清空>string定义的字符里的数值,接着将本符号位>push入队。
  • (5)考虑到输入的字符串的末位可能为数值,而后面没有符号位来“判断”并将最后的数值>push入队,因此,再次根据>string定义的字符串是否为空来选择>push。
  • (6)在Print类中将在Scan类中排列完的队列输出,因为当输入时某位数值的时超过10位时报错跳出后仍会进行接下去的任务,因此,报错的时候也会把报错的队列错误输出,因此在报错时>int定义一个值来判断是否为“报错”情况。

2、queue模板类的应用

3、分文件类外定义

  • 将所有的代码放在一个文件里显得过于冗长,因此使用分文件的类外定义来使得程序看起来简单明了。

二、遇到的问题和BUG

  • (1)在数字位数超过10位报错时忘记加>break
  • (2)一开始的数字输出根据后面的符号来控制,没有考虑到末位为数字的情况
  • (3)在Scan.cpp中最后没有返回队列的值
  • (4)分文件类外定义时忘记在相应的.cpp文件中的开头添加头文件
  • (5)遇到BUG如下

    原因为使用英文版的Dev C++ ,将类的添加弄成新文件,而后重新建立项目并正确建立类后得以解决。

三、总结和反思

  • (1)因为补考的原因使得我这次作业较别人晚提交,感觉到烦躁和压力,一开始做的时候因为对C++编程的不熟练和对queue语法的初次接触心烦意乱。而后静下心来,不会就上网查阅,有问题就询问同学,再不理解就在博客园中找大神的代码来看。自从进入计算机这个专业,最大的收获就是学会了更自觉、更主动地依靠自己去解决遇到的问题。也从另外一个方面说明,遇到困难不要急、不要自暴自弃,不懂就学、就问,最后终究都能得到解决,至少在这个过程中会收获你不去实践所得不到的东西。
  • (2)通过这次作业,我认识到自己的编程能力的基础不够扎实牢靠,算法严谨性不够,自己动手寻找BUG和解决BUG(调试)的能力欠缺。
  • (3)针对以上的问题,结合上学期时间安排不妥当和贪玩的状况,在接下来的时间里,我要投入更多的时间花在编程的训练上,并挤出时间通过网上视频和做题等方式巩固追补C语言的基础。
  • (4)看到实验班群上老师和大牛的聊天记录,我很庆幸和感激能够待在这个充满梦想和进取的大家庭里,我相信在更强的压力下才能比其他同学学到更多的东西。最后,加油!成为你想成为的那个自己!

C++计算器项目的初始部分的更多相关文章

  1. 第三次作业— C++计算器项目的初始部分

    作业题目: C++计算器项目的初始部分 仓库 代码: Scan.h #ifndef SCAN_H #define SCAN_H #include<string> #include<i ...

  2. C++计算器项目的初始部分(第三次作业)

    C++计算器项目的初始部分 项目源文件地址:calculator 项目信息: * 项目名称:Calculator * 项目实现: * 对四则运算表达式进行拆解 * 对拆解的表达式进行简单的错误判断 * ...

  3. 面向对象课程 - 寒假第三次作业 - C++计算器项目初始部分

    C++计算器项目初始部分 零.项目源文件地址 传送门:calculator 一.项目信息相关: 项目:Calculator 版本:1.0 日期:2016.2.16 实现: 基本的操作界面 对四则运算表 ...

  4. java计算器项目

    简单的java计算器项目   题目:java计算器项目 一. 题目简介: 一个能进行加减乘除四则运算的小程序 Github链接:https://github.com/lizhenbin/test/tr ...

  5. 面向对象课程 - 寒假第四次作业 - C++计算器项目计算部分

    C++计算器项目计算部分 零.项目源文件地址 地址:Calculator 2.0 一.项目信息相关 项 目 : Calculator 版 本 : 2 . 0 日 期 : 2016 . 4 . 14 实 ...

  6. npm项目创建初始过程详解

    npm install 就是安装模块,npm run dev  就是执行npm script中的命令.当我们执行npm命令的时候,它到哪里去找,这就要说到每个node项目中都有的核心文件package ...

  7. vue-cli安装webpack项目及初始配置

    这个下载包是自己基于 webpack 搞的,可以看看https://github.com/chichengyu/webpack vue-cli安装 输入 npm install vue-cli -g ...

  8. web项目的初始搭建和intellij的tomcat的配置

    点击web application

  9. [C++ Calculator 项目] 初试

    Calculator V1.0 注:这是一个C++计算器项目的初始部分. 大体功能简介: 能够输入一串数学表达式 逐字符扫描,提取数字和符号得到一组队列 逐行输出提取的符号与数字 实现代码如下: sc ...

随机推荐

  1. jQuery中hover与mouseover和mouseout的区别分析

    本文实例分析了jQuery中hover与mouseover和mouseout的区别.分享给大家供大家参考,具体如下: 以前一直以为在jquery中其实mouseover和mouseout两个事件等于h ...

  2. 为什么在大多数OS中都引入”打开“这一文件系统调用?打开的含义是什么?

    当用户要求对一个文件实施多次读/写或者其他操作时,每次都要从检索目录开始.为了避免多次重复检索目录,在大多数OS中都引入了”打开“这一文件系统调用,当用户第一次请求对某文件进行操作时,须先利用open ...

  3. 使用webpack loader加载器

    了解webpack请移步webpack初识! 什么是loader loaders 用于转换应用程序的资源文件,他们是运行在nodejs下的函数 使用参数来获取一个资源的来源并且返回一个新的来源(资源的 ...

  4. php中的字符串常用函数 str_replace 字符串替换,替换全角空格

    <?php $str = "hello world!"; echo(str_replace(array('hello', 'world'), array('tom', 'cl ...

  5. 十二、curator recipes之双重屏障DoubleBarrier

    简介 curator实现了单个屏障barrier和双重屏障DoubleBarrier,单个屏障就是在一个进程里面设置了屏障,并等待其它进程去移除这个屏障,否则一直阻塞.双重屏障就是设置了两道屏障,两个 ...

  6. 从MySQL到ORM(二):MySQL基础

    一.基本概念 1.数据库: 数据库(DataBase)就是一个存储数据的仓库,为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上.通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据 ...

  7. MySQL数据导出为Excel, json,sql等格式

    MySQL数据经常要导出为Excel, json,sql等格式,通过步骤都很多,麻烦,现在通过Treesoft可以方便的导出你要的数据格式. 1.在线执行SQL,在数据列表中有相应按钮,方便的将数据导 ...

  8. redis集群的远程管理与监控

    一.redis集群的重要性 目前大部分的互联网平台,都会用到Redis内存数据库,以提高响应速度,提升用户使用体验. 为了实现Redis的高可用,通常都会布署Redis集群,使用Redis-Senti ...

  9. MVC 手机端页面 使用标签file 图片上传到后台处理

    最近刚做了一个头像上传的功能,使用的是H5 的界面,为了这个功能搞了半天的时间,找了各种插件,有很多自己都不知道怎么使用,后来只是使用了一个标签就搞定了:如果对样式没有太大的要求我感觉使用这个就足够了 ...

  10. MyEclipse中设置开发项目时使用的默认JDK

    安装好MyEclipse之后,在MyEclipse中开发项目时,默认使用的是MyEclipse是自带的JDK,如下图所示: 如果我们需要使用自己安装好的JDK,那么就需要在MyEclipse中重新设置 ...