作业地址:【https://edu.cnblogs.com/campus/nenu/2016CS/homework/2266】
零、结对
要求:每2人自愿结成1对(若出现奇数,则允许有且仅有一组同学由3人结成1对),由2人共同完成四则运算试题生成编码,在真实物理空间中相距不得超过的距离,可以不借助设备对话。一般地,相距一两米内,2人共同使用同一台显示器、同一套鼠标键盘,则符合要求。
一、程序要求(60分)
简述
程序名称:f4.exe
作用:一个用于四则运算的控制台程序
功能列表:
- 功能1:支持整数和不含括号的四则运算且表达式可以重复。
- 功能2:支持小数和含小括号的四则运算且表达式可以重复。
- 功能3:表达式不重复且输出结果显示在控制台,且将控制台显示的结果输出到指定位置的txt文件中。
实现效果请与教师和助教给出样例保持一致。
功能1(20分)
表达式:合法运算符为+
、-
、*
、/
,合法运算数为整数
。3个运算符,4个运算数。生成的表达式不存在小括号。
表达式的值:整数
或者小数
。表达式最后的值若为有限小数,如3/4,则直接输出0.75;若为无限小数,如1/3,则最终表达式输出结果保留三位小数,四舍五入,即输出0.333。
请注意在表达式计算过程中1/3 != 0.33333333333333333333333333333333,而是无限长,例如 2/3-1/3的正确结果是0.333,而并非是0.334(计算过程为2/3-1/3=0.667-0.333=0.334)。
题目数量由用户设置,若设置的题目总数N不为正整数,则输出题目数量必须是 正整数。
。程序依次输出每个表达式,用户从控制台输入其猜测的答案(此过程称为“答题”),答题格式为?用户输入答案
,若为正确答案则输出回答正确。
,否则错误则输出回答错误,正确答案是Answer。
(Answer为此次表达式对应的正确答案)。答完所有题目后,程序应换行一次,最后输出总共N道题,你答对M道题。
,N为题目总数,M为答对题目数量。
控制台输入格式为f4 -n 题目总数
,以题目总数N为10,答对题目数量M为任意小于题目总数的非负整数,此次假设M为4作为样例,如下。
C:\Users\lenovo>f4 -n 10
1/2+3-1
?2.5
回答正确。
1-3*4+5
?-4
回答错误,正确答案是-6。
1/3+2-1
?1.333
回答正确。
2/3-1/3
?0.334
回答错误,正确答案是0.333。
···(一共10道题,需要回答完设定的题目数量)
总共10道题,你答对4道题。
C:\Users\lenovo>f4 -n -10
题目数量必须是 正整数。
C:\Users\lenovo>f4 -n -test
题目数量必须是 正整数。
C:\Users\lenovo>f4 -n 4.3
题目数量必须是 正整数。
C:\Users\lenovo为f4.exe文件所在路径,>为提示符,如果你的wf.exe文件在D:\test中,此处的“C:\Users\lenovo>”则显示为"D:test>"。"f4"是程序的名字,它真正的名字是"f4.exe","-n 10"是命令行参数。按下回车,此时程序开始执行。"-n"这个参数后面输入多少,就生成多少题目。省略号和括号中的内容不用输出,仅为了说明输入输出格式。
功能2(20分)
表达式:合法运算符为+
、-
、*
、/
、(
、)
,合法运算数为整数
或者小数
。3个运算符,4个运算数。生成的表达式可能有小括号,也可能不存在小括号。
表达式的值:整数
或者小数
。表达式最后的值若小数的值为0,如8.00或者8.0,则输出为8;表达式最后的值若为有限小数,如3/4,则直接输出0.75;表达式最后的值若为无限小数,如1/3,则最终表达式输出结果保留三位小数,四舍五入,即输出0.333。
请注意在表达式计算过程中1/3 != 0.33333333333333333333333333333333,而是无限长,例如 2/3-1/3的正确结果是0.333,而并非是0.334(计算过程为2/3-1/3=0.667-0.333=0.334)。
题目数量由用户设置,若设置的题目总数N为1到100之间的正整数且包含起始位置,则输出题目数量范围为1到100之间的正整数。
。程序依次输出每个表达式,用户从控制台输入其猜测的答案(此过程称为“答题”),答题格式为?用户输入答案
,若为正确答案则输出回答正确。
,否则错误则输出回答错误,正确答案是Answer。
(Answer为此次表达式对应的正确答案)。答完所有题目后,程序应换行一次,最后输出总共N道题,你答对M道题。
,N为题目总数,M为答对题目数量。
控制台输入格式为f4 -c 题目总数
,以题目总数N为10,答对题目数量M为任意小于题目总数的非负整数,此次假设M为4作为样例,如下。
C:\Users\lenovo>f4 -c 10
1/2+3.5-1
?3
回答正确。
1-3.5*(1+5)
?-7
回答错误,正确答案是-20。
1/(3+2)-1
?-0.8
回答正确。
2/3-1/3
?0.334
回答错误,正确答案是0.333。
((1/2)-4)*5=
?-17.5
回答正确。
···(一共10道题,需要回答完设定的题目数量)
总共10道题,你答对4道题。
C:\Users\lenovo>f4 -c -10
题目数量范围为1到100之间的正整数。
C:\Users\lenovo>f4 -c -test
题目数量范围为1到100之间的正整数。
C:\Users\lenovo>f4 -c 4.3
题目数量范围为1到100之间的正整数。
C:\Users\lenovo为f4.exe文件所在路径,>为提示符,如果你的wf.exe文件在D:\test中,此处的“C:\Users\lenovo>”则显示为"D:test>"。"f4"是程序的名字,它真正的名字是"f4.exe","-c 10"是命令行参数。按下回车,此时程序开始执行。"-c"这个参数后面输入多少,就生成多少题目。省略号和括号中的内容不用输出,仅为了说明输入输出格式。
功能3(20分)
请保留功能2,在功能2的基础上完成功能3,功能2可能生成重复的四则运算表达式,现在请保证生成的四则运算表达式是不重复的,将其输出至控制台上且保存到指定位置的txt文件中。
控制台与txt文件中数据格式均要求:答案与表达式横向对齐,答案竖直方向左对齐,表达式与答案之间存在空白,空白个数不做限定。
控制台输入格式为f4 -c 题目总数 -f txt文件路径
。txt文件路径形如E:\test\test.txt
。假定txt文件路径为E:\test.txt,题目数量为3,样例如下。
C:\Users\lenovo>f4 -c 3 -f E:\test.txt
1/2+3.5-1= 3
1/(3+2)-1= -0.8
((1/2)-4)*5= -17.5
//此时E:\test.txt中仅保存上述三个表达式,如果每次输出到同一个文件中,则每次输出均覆盖上一次输出结果,此段文字仅解释说明,不输出
什么叫重复的表达式?姑且定义为能通过交换律、结合律、分配律变换为同一道题的表达式是相同的。比如:
1*2+3*2
2*(1+3)+0
参考《构建之法》第4章两人合作,结对编程上述功能,要求每人发布随笔1篇 (代码是共同完成的,博客是分别完成的)。结对编程的两个同学的博客内容除了涉及到的代码是相同的,而编程收获或者每个人对项目重难点的理解应该是不同的。
二、博客要求(40分)
要求0(5分)
【你的博客第一行必须写上作业要求的博客链接】 这样,读者看到学生的博客后,就可以点击到作业要求的博客。
例如:https://www.cnblogs.com/ranh941/p/7999266.html。
反向链接,让读者了解背景。要不然很多人看了,并不了解要求,也是一头雾水。
作业如果没有此项,此次作业无效。
要求1(5分)
在博客中给出你们git仓库地址。
git项目名称:f4
git地址形式:https://git.coding.net/XXX/f4.git
项目目录:
/f4.exe (此文件名要求必须是f4.exe。java或python代码,请编译为exe。)
/f4.cs (f4源代码,文件名也可能是f4.cpp,f4.c,f4.py,f4.java)
/??? (f4源代码所依赖的其他文件,如果存在的话。)
f4.exe需要由你自己的代码编译得到。f4.cs (或其他语言源代码) 与f4.exe如果不能对应,则此次作业倒扣所有分数。
代码要求在 coding.net 做版本控制。要求push&pull时使用git客户端,而不使用web页面。推荐git客户端tortoisgit。安装过程可参考链接:https://www.cnblogs.com/ranh941/p/7555082.html。
**请注意助教或教师会使用脚本pull每个人的项目,如果你在博客中给出的链接不符合规范而导致脚本无法获取你的项目或者不符合要求1中任意一项规范,那么程序要求得分为0。
要求2(30分)
- 博客中给出结对编程同学的博客地址和姓名。(5分)
- 介绍解题思路、每个功能的重点/难点、编程收获,展示重要代码片断,展示你感觉得意、突破、困难的地方。(6分)
代码要求:要求使用cnblogs代码控件。凡粘贴IDE中的代码截图,或者贴文字而没有关键字高亮或彩色的,要求3的得分记作0分。参考往届博客https://www.cnblogs.com/ranh941/p/7545915.html、http://www.cnblogs.com/huangxman/p/5871201.html - 给出结对编程的体会(8分)
- 至少3项在编码、争论等活动中花费时间较长,给你较大收获的事件。(6分)
- 给出照片1张,包括结对的2位同学、工作地点、计算机,可选项包括其他能表达结对编程工作经历的物品或场景。 (5分)
关于抄袭
- 如果出现除结对编程同学以外的同学代码、博客内容、代码运行结果截图相关的情况,扣除抄袭者和被抄袭者此次作业的所有分值,例如同学A和同学B结对编程,同学C却和同学A的作业情况雷同,出现代码运行结果一模一样或者程序雷同的情况,则扣除同学A、B、C此次作业的所有分值。
- 直接从网上复制粘贴别人的代码发表在博客中视为严重抄袭。模仿学习别人代码是去理解别人的代码思路,然后不看别人的代码,自己重新写代码来实现功能,而并非直接复制粘贴别人的代码放在博客中视为自己的工作。如有上述行为,扣除此次作业所有分值。
附加分(10分)
博客言之有物,表达清楚,不敷衍了事(比如一行笼统文字或者有图片而不对图片内容作解释等),以上标准由助教和教师判定。
我们(本校或外校教师或助教)对于你的作业和项目的任何评价,都不是对你的价值观或道德的评价,而是在我们对软件工程学科的理解基础上,对你的工作的评论。