拿到题目的时候,快放假了,也没心思做。十月七号的一下午大概从两点做到八点半,加上十月八号的十二点半到两点半,做了一共八个半小时,去掉吃饭半个小时那么一共做了八个小时。

逆波兰表达式我是扒的别人代码,没有自己写一遍。

记得有一位老师曾经在课上讲过,每个人按照约定完成自己的工作,这是现代工业的基础。

学习了一些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#实现的更多相关文章

  1. 软件工程第四周作业-PSP

    psp表格 类别 内容 开始时间 结束时间 中断时间 delta时间 学习 学习C# 10.6下午7:00 10.6下午8:00 - 60min 写代码 写主函数以及一些小的方法 10.7下午2:00 ...

  2. 20169212《Linux内核原理与分析》第四周作业

    Linux第四周作业 1. 堆栈知识 首先回顾了下堆栈相关的知识,堆栈机制是高级语言可以运行的一个基础,这一块需要重点掌握.函数发生调用时,如图 call指令:将eip的按顺序执行的下一条指令(因为在 ...

  3. 11061160_11061151_Pair Project: Elevator Scheduler软件工程结对编程作业总结

    软件工程结对编程作业总结 11061160  顾泽鹏 11061151  庞梦劼 一.关于结对编程 这次的软工任务既不是单打独斗的个人任务,也不是集思广益的团队项目,而是人数为两人的结对编程.两个人合 ...

  4. 2019年春季学期第四周作业Compile Summarize

    这个作业属于哪个课程 C语言程序设计一 这个作业要求在哪里 2019春季学期第四周作业 我的课程目标 重新学习有关数组的问题 这个作业在哪个具体方面帮助我实现目标 对于置换有了新的见解 参考文献 中国 ...

  5. 2018-2019-1 20189221《Linux内核原理与分析》第四周作业

    2018-2019-1 20189221<Linux内核原理与分析>第四周作业 教材学习:<庖丁解牛Linux内核分析> 第 3 章 MenuOS的构造 计算机三大法宝:存储程 ...

  6. 20169211《Linux内核原理与分析》第四周作业

    20169211<Linux内核原理与分析>第四周作业内容列表 1.教材第3.5章节知识学习总结: 2.实验楼配套实验二实验报告: 1.<linux内核设计与实现>教材第3.5 ...

  7. “希希敬敬对”队软件工程第九次作业-beta冲刺第五次随笔

    “希希敬敬对”队软件工程第九次作业-beta冲刺第五次随笔 队名:  “希希敬敬对” 龙江腾(队长) 201810775001 杨希                   201810812008 何敬 ...

  8. “希希敬敬对”队软件工程第九次作业-beta冲刺第四次随笔

    “希希敬敬对”队软件工程第九次作业-beta冲刺第四次随笔 队名:  “希希敬敬对” 龙江腾(队长) 201810775001 杨希                   201810812008 何敬 ...

  9. “希希敬敬对”队软件工程第九次作业-beta冲刺第三次随笔

    “希希敬敬对”队软件工程第九次作业-beta冲刺第三次随笔 队名:  “希希敬敬对” 龙江腾(队长) 201810775001 杨希                   201810812008 何敬 ...

随机推荐

  1. ubuntu—终端安装mysql

    ---恢复内容开始--- Step 1 : 安装指令 ~$ sudo apt-get install mysql-server Step 2: 查看是否正常安装 ~$ ps aux | grep my ...

  2. 分布式版本控制系统之Git

    Git Git 是目前世界上最先进的分布式版本控制系统(没有之一) 作用 源代码管理 为什么要进行源代码管理? 方便多人协同开发 方便版本控制 Git的诞生 作者是 Linux 之父:Linus Be ...

  3. Linux学习笔记——1.超级用户

    以超级用户工作:su su命令允许临时变换到任何一用户标识(如果拥有口令的话),并挂起当前shell,为新用户开启一个新的shell. su <user> 将当前用户标识harley变换为 ...

  4. 帝国cms教程父栏目和子栏目都能在当前栏目高亮

    首先在/e/class/userfun.php这个文件里面加上下面代码.上面父栏目的,下面子栏目的.红色代表css样式.自定义吧 function currentPage($classid,$this ...

  5. python+selenium webdriver.firefox()方式配置浏览器设置

    webdriver.firefox() 爬虫需求:  (其实是输入参数可获取.zip/pdf 文件,然后点击下载) ——但是firefox浏览器有Bug,点击下载之后会有弹出窗口,需要你点击确定,这怎 ...

  6. 请求报文的方法及get与post的区别

    请求报文的方法及get与post的区别 请求的起始以方法作为开始,方法用来告诉服务器要如何做. 在开发中通常有两种请求方式. get方式: 是以实体的方式得到由请求 URI 所指定资源的信息,如果请求 ...

  7. 中国大学MOOC-C程序设计(浙大翁恺)—— 时间换算

    时间换算(10分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果小 ...

  8. 【Hutool】Hutool工具类之随机工具——RandomUtil

    commons-lang中对应也有RanddomUtils.RandomStringUtils 直接从类结构开始入手: 基本都是见名知意了,就不一一展开:点开源码可以看到算是比较通俗易懂的对Rando ...

  9. 【BZOJ2286】消耗战(虚树,动态规划)

    [BZOJ2286]消耗战(虚树,动态规划) 题面 BZOJ Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总 ...

  10. 苏州Uber优步司机奖励政策(12月21日到12月27日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...