1.结对编程

结对编程的Partner依旧是郑蕊师姐(博客:http://www.cnblogs.com/zhengrui0452/

我们一起改进的是郑蕊师姐做的“四则运算”

郑蕊师姐之前完成四则运算的方式是使用枚举,现在要是用逆波兰的方式实现“四则运算”

首先师姐像我介绍了如何使用逆波兰的方式实现运算式的逻辑先后。在一个运算式中包含:运算符、操作数两部分

通过逆波兰的方式实现四则运算的整体思路如下:

1.生成操作数、运算符(为了尽可能的保证思路正确的前提下完成四则运算。我们首先将操作数规定为整数(0-9),运算符只使用“+”“-”“*”“/”)

2.根据已生成操作数、运算符生成运算式(中缀表达式)

3.根据运算式的中缀表达式生成后缀表达式

4.根据后缀表达式计算表达式结果

在将中缀表达式转换为后缀表达式的过程中,要定义运算符的优先级:“+”=“-”<“*”=“/”

通过使用栈 Stack这种数据结构根据如下规则生成后缀表达式

(1)首先,需要分配2个栈,栈s1用于临时存储运算符(含一个结束符号),此运算符在栈内遵循越往栈顶优先级越高的原则;栈s2用于输入逆波兰式,为方便起见,栈s1需先放入一个优先级最低的运算符,在这里假定为'#';

(2)从中缀式的左端开始逐个读取字符x,逐序进行如下步骤:

1.若x是操作数,则分析出完整的运算数(在这里为方便,用字母代替数字),将x直接压入栈s2;

2.若x是运算符,则分情况讨论:

若x是'(',则直接压入栈s1;

若x是')',则将距离栈s1栈顶的最近的'('之间的运算符,逐个出栈,依次压入栈s2,此时抛弃'(';

若x是除'('和')'外的运算符,则再分如下情况讨论:

若当前栈s1的栈顶元素为'(',则将x直接压入栈s1;

若当前栈s1的栈顶元素不为'(',则将x与栈s1的栈顶元素比较,若x的优先级大于栈s1栈顶运算符优先级,则将x直接压入栈s1。否者,将栈s1的栈顶运算符弹出,压入栈s2中,直到栈s1的栈顶运算符优先级别低于(不包括等于)x的优先级,或栈s2的栈顶运算符为'(',此时再则将x压入栈s1;

(3)在进行完(2)后,检查栈s1是否为空,若不为空,则将栈中元素依次弹出并压入栈s2中(不包括'#');

(4)完成上述步骤后,栈s2便为逆波兰式输出结果。但是栈s2应做一下逆序处理,因为此时表达式的首字符位于栈底;

在实现的过程中,师姐先根据上述逻辑写出了伪代码(这点真的很重要),然后将伪代码实现。

由于我们最开始在判断是否是数字的地方写错了(ASCII码 0 – 9 对应 48 - 57),判断条件本应该是<58结果写成了 <57  !!汗

对于去栈元素时要判断栈是否为空的逻辑位置错误,导致开始生产的表达式有问题,后来讲判断空栈提到运算符优先级判断外层,解决了这一问题。

师姐在写代码能力非常6666,赞!偶尔会有一些不注意而出现的错误,如上面判断数字的地方,这种情况我也有过很多,一起前进。互勉!

2.PSP

Job Type Date Start End Total
站立会议 会议 2016.4.7 18:35 18:50 15
站立会议 会议 2016.4.8 15:10 15:25 15
修改删除 编码测试 2016.4.8
2016.4.9
15:30
14:20
17:00
16:00
30
140
站立会议 会议 2016.4.11 15:10 15:25 15
MPAndroidChart的测试 编码测试 2016.4.11 15:40 17:00 80
站立会议 会议 2016.4.7 18:35 18:50 15
MPAndroidChart的测试 编码测试 2016.4.12 19:00 19:30 30
站立会议 会议 2016.4.13 15:10 15:25 15
生成饼图测试 编码测试 2016.4.13 15:30 16:50 80
第六周作业 随笔 2016.4.13 21:00 22:30 90

饼图

3.工作量表

  代码行数 博客字数 知识点
第五周 280 5548 逆波兰

4.checkList:

  • 不同 语言/类型 单元测试工具
  • 内聚 耦合
  • 测试矩阵
  • 站立会议
  • psp
  • 工作量

第六周-总结&结对编程的更多相关文章

  1. python第六周:面向对象编程

    面向对象编程: 世界万物,皆可分类 世界万物,对象 只要是对象,就肯定属于某种品类 只要是对象,就肯定有属性 oop编程利用"类"和"对象"来创建各种模型来实现 ...

  2. 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算

    20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...

  3. ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结

    20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  4. 20165323 结对编程之四则运算week2-整体总结

    一.需求 实现一个命令行程序,要求: 1.自动生成小学四则运算题目(加.减.乘.除) 2.支持整数 3.支持多运算符(比如生成包含100个运算符的题目) 4.支持真分数 5.能判断错误,在输入错误结果 ...

  5. 20165223 结对编程之四则运算week1-阶段性总结

    目录 一.结对对象 二.需求分析 三.设计思路 四.功能截图 五.结对感受 一.结对对象 担任角色 驾驶员(Driver):20165223 蔡霓(是控制键盘输入的人) 领航员(Navigator): ...

  6. [2019BUAA软件工程]结对编程感想

    结对编程感想 写在前面   本博客为笔者在完成软件工程结对编程任务后对于编程过程.最终得分的一些感想与经验分享.此外笔者还对于本课程的结对编程部分提出了一些建议. Tips Link 作业要求博客 2 ...

  7. 20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算

    一.码云链接 项目名称FAO 码云链接 二.需求分析 实现一个命令行程序: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确 ...

  8. 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)

    20165101刘天野 2017-2018-2 <Java程序设计> 结对编程练习_四则运算(第二周) 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持分数运算 支持多运算符 ...

  9. 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)

    第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...

随机推荐

  1. Iptables防火墙(SNAT和DNAT)

     1.SNAT:源地址转换 实现内网访问外网,修改IP地址,使用POSTROUTING 命令:iptables  -t  nat  -A POSTROUTING  -s  192.168.1.10/2 ...

  2. 11LaTeX学习系列之---LaTeX的特殊字符

    目录 目录 前言 (一)源代码 (二)输出效果 目录 本系列是有关LaTeX的学习系列,共计19篇,本章节是第11篇. 前一篇:10LaTeX学习系列之---Latex的文档结构 后一篇:12LaTe ...

  3. Activity启动模式 Tasks和Back Stack

    http://www.cnblogs.com/mengdd/archive/2013/06/13/3134380.html Task是用户在进行某项工作时需要与之交互的一系列activities的集合 ...

  4. linuxserver本地和百度云备份脚本小试

    本地单文件上传脚本.命名uf 这是在本机上做的測试,利用bpcs_uploader脚本实现,仅仅是进行简单的封装.自己主动完好云端文件路径. 技术要点:使用dirname获取文件所在文件夹.使用pwd ...

  5. Smith Numbers POJ - 1142 (暴力+分治)

    题意:给定一个N,求一个大于N的最小的Smith Numbers,Smith Numbers是一个合数,且分解质因数之后上质因子每一位上的数字之和 等于 其本身每一位数字之和(别的博客偷的题意) 思路 ...

  6. php 请求另一个服务器接口返回数据

    <?php /** * Created by PhpStorm. * User: thinkpad * Date: 2015/7/17 0017 * Time: 13:24 */ class A ...

  7. Arduino IDE for ESP8266教程(二) 创建WIFI AP模式

    创建WIFI热点 #include <ESP8266WiFi.h> void setup() { Serial.begin ( 115200 ); Serial.println(" ...

  8. Qt 编程指南 2 Hello Designer

    2 Hello Designer  ①编辑窗口部件:为窗口拖拽控件(即部件),编辑控件布局等. ②编辑信号/槽:用户在图形界面的一些动作会触发窗口或控件的信号,信号对应的处理函数就是槽函数,这种模式实 ...

  9. oracle12C 创建PDB

    1.根据数据库现有模板创建PDB CREATE PLUGGABLE DATABASE ssptrad ADMIN USER sspIDENTIFIED BY oracle roles=(dba) fi ...

  10. SpringMVC+Swagger详细整合

    一.新建maven工程导入正确的pom文件 还是那句话,包导入正确就成功了80%.剩下的20%慢慢攻克吧. <project xmlns="http://maven.apache.or ...