软件工程第四周作业之四则运算-C#实现
拿到题目的时候,快放假了,也没心思做。十月七号的一下午大概从两点做到八点半,加上十月八号的十二点半到两点半,做了一共八个半小时,去掉吃饭半个小时那么一共做了八个小时。
逆波兰表达式我是扒的别人代码,没有自己写一遍。
记得有一位老师曾经在课上讲过,每个人按照约定完成自己的工作,这是现代工业的基础。
学习了一些C#语言。
我写代码生成了带括号的四则运算表达式。数是随机的,括号是暴力生成的,特暴力。
有理数计算懒得写了,女神青睐不值钱。
加上括号之后怎么避免产生无限小数呢?这个我没有避免,仍然有时候会算出带小数的,比较少。
加上括号之前的比较好处理。
由于第一个数一定不会做被除数(出现在分母里)
我直接把第2,3,4个数都构造成2^m*5^n,这样一定可以得到一个有限小数,当然,可能存在更好更漂亮的方法。
下面贴一些关键代码。
static void Main(string[] args)
{ int num;//The number of expressions
int cnt = ;
int token = ;
var arguments = CommandLineArgumentParser.Parse(args);//command line parameter
int anslen = ;//The number of the answers of expressions that have been used.
double[] ansrep;//array to maintain answers that have been used
ansrep = new double[];
ansrep[] = -;
if (!arguments.Has("-c"))//如果命令行参数没有-c
num = ;
else
{
num = int.Parse(arguments.Get("-c").Next);//命令行参数中得到要输出的表达式数量
token = ;
}
if (token==)
{
for (int i = ; i < num; i++)
{
Test t = new Test();//new Test
t.opinit();
t.GetBracketExp();
// t.GetExp();
//t.NoRepeatedAns(anslen, ansrep);
ansrep[(anslen++) - ] = t.ansr;
t.DispExp();//display expression
Console.Write("?");
double ans = double.Parse(Console.ReadLine());
// Console.WriteLine("{0},{1}",ans,t.ansr);
if (Math.Abs(ans - t.ansr) < 1e-)//answer is right
{
Console.WriteLine("You are very clever!!!");
cnt++;
}
else//answer is wrong
{
if (Math.Abs((double)Math.Round(t.ansr) - t.ansr) < 1e-)//Intenger
{
Console.WriteLine("Sorry,the answer is {0}", (int)t.ansr);
}
else//decimal
{
string floatValue = t.ansr.ToString();
floatValue = floatValue.TrimEnd('.', '');
Console.WriteLine("Sorry,the answer is {0}", floatValue); }
}
/* for (int j = 0; j < anslen; j++)
{
Console.WriteLine("{0:f5}", ansrep[j]);
}*/
}
}
else
{
for (int i = ; i < num; i++)
{
Test t = new Test();//new Test
t.opinit();
t.GetBracketExp();
// t.GetExp();
//t.NoRepeatedAns(anslen, ansrep);
ansrep[(anslen++) - ] = t.ansr;
t.DispExpAns(t);//display expression and answer }
}
Console.WriteLine("Total 20 Problems,you have solved {0}problem(s)", cnt);
}
}
这是我的主函数。
值得一提的是,读取命令行参数也是用的别人代码,这两个加起来有接近三百行之多。

结对编程的照片,最后修改一些代码的格式,找一些bug,我的搭档王玉玲同学耐心的给予我帮助和指导,作为一个领航者给出一些方向上的意见。
https://git.coding.net/Rainbows/F4.git
这是我代码的git地址
结对编程争论的点、体会稍后补充
软件工程第四周作业之四则运算-C#实现的更多相关文章
- 软件工程第四周作业-PSP
psp表格 类别 内容 开始时间 结束时间 中断时间 delta时间 学习 学习C# 10.6下午7:00 10.6下午8:00 - 60min 写代码 写主函数以及一些小的方法 10.7下午2:00 ...
- 20169212《Linux内核原理与分析》第四周作业
Linux第四周作业 1. 堆栈知识 首先回顾了下堆栈相关的知识,堆栈机制是高级语言可以运行的一个基础,这一块需要重点掌握.函数发生调用时,如图 call指令:将eip的按顺序执行的下一条指令(因为在 ...
- 11061160_11061151_Pair Project: Elevator Scheduler软件工程结对编程作业总结
软件工程结对编程作业总结 11061160 顾泽鹏 11061151 庞梦劼 一.关于结对编程 这次的软工任务既不是单打独斗的个人任务,也不是集思广益的团队项目,而是人数为两人的结对编程.两个人合 ...
- 2019年春季学期第四周作业Compile Summarize
这个作业属于哪个课程 C语言程序设计一 这个作业要求在哪里 2019春季学期第四周作业 我的课程目标 重新学习有关数组的问题 这个作业在哪个具体方面帮助我实现目标 对于置换有了新的见解 参考文献 中国 ...
- 2018-2019-1 20189221《Linux内核原理与分析》第四周作业
2018-2019-1 20189221<Linux内核原理与分析>第四周作业 教材学习:<庖丁解牛Linux内核分析> 第 3 章 MenuOS的构造 计算机三大法宝:存储程 ...
- 20169211《Linux内核原理与分析》第四周作业
20169211<Linux内核原理与分析>第四周作业内容列表 1.教材第3.5章节知识学习总结: 2.实验楼配套实验二实验报告: 1.<linux内核设计与实现>教材第3.5 ...
- “希希敬敬对”队软件工程第九次作业-beta冲刺第五次随笔
“希希敬敬对”队软件工程第九次作业-beta冲刺第五次随笔 队名: “希希敬敬对” 龙江腾(队长) 201810775001 杨希 201810812008 何敬 ...
- “希希敬敬对”队软件工程第九次作业-beta冲刺第四次随笔
“希希敬敬对”队软件工程第九次作业-beta冲刺第四次随笔 队名: “希希敬敬对” 龙江腾(队长) 201810775001 杨希 201810812008 何敬 ...
- “希希敬敬对”队软件工程第九次作业-beta冲刺第三次随笔
“希希敬敬对”队软件工程第九次作业-beta冲刺第三次随笔 队名: “希希敬敬对” 龙江腾(队长) 201810775001 杨希 201810812008 何敬 ...
随机推荐
- python函数基本介绍
函数 1.函数结构 def 是函数的定义关键字,my_len是函数名.()传参用,冒号下面都是函数体. 执行函数方法:函数名加括号来执行函数.My_len() 举例: # s = 'lkfjsjulk ...
- Python入门 —— 05时间日期处理小结
此文多涉及基础,如果想要深入理解则到文末,有提供链接 涉及对象 1. datetime 2. timestamp 3. time tuple 4. string 5. date - datetime基 ...
- Java客户端访问HBase集群解决方案(优化)
测试环境:Idea+Windows10 准备工作: <1>.打开本地 C:\Windows\System32\drivers\etc(系统默认)下名为hosts的系统文件,如果提示当前用户 ...
- Scala 语法(一)
(1)基本语法 变量 val var(可变变量): 数据类型 Byte,Char,Int,Short,Long,String(字符),Float,Double,Boolean(true,flase). ...
- C语言中结构体的访问方法解读
在C语言中,对结构体的访问一般有两种常规方式:"."访问和"->"访问.那么两者有什么区别呢?对C语言有一定了解的同学应该知道,我们新建一个结构体的时候, ...
- VIM 键
输入 vimtutor命令,可以打开Linux使用手册(基本使用). ***. 插入键: A: 行尾插入 a: 字符后面插入 i: 字符前面插入 I: 行首插入 r:只替换一次字符 R:一直替换,直 ...
- vue相关ajax库的使用
相关库: vue-resource: vue插件, 多用于vue1.x axios: 第三方库, 多用于vue2.x vue-resource使用 // 引入模块 import VueResource ...
- 北京Uber优步司机奖励政策(10月5日~10月11日)
用户组:优步北京人民优步A组(适用于10月5日-10月11日) 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/ ...
- 成都Uber优步司机奖励政策(2月17日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- sphinx生成cakephp文档
cakephp的文档是用一个叫sphinx程序生成的 这个程序是python写的,所以我们要用sphinx本机必须先装python. 编译过程在Ubuntu下进行,默认Ubuntu已经安装了pytho ...