软件工程第四周作业之四则运算-C#实现
拿到題目的時候,快放假了,也沒心思做。十月七號的一下午大概從兩點做到八點半,加上十月八號的十二點半到兩點半,做了一共八個半小時,去掉吃飯半個小時那么一共做了八個小時。
逆波蘭表達式我是扒的別人代碼,沒有自己寫一遍。
記得有一位老師曾經(jīng)在課上講過,每個人按照約定完成自己的工作,這是現(xiàn)代工業(yè)的基礎(chǔ)。
學(xué)習(xí)了一些C#語言。
我寫代碼生成了帶括號的四則運算表達式。數(shù)是隨機的,括號是暴力生成的,特暴力。
有理數(shù)計算懶得寫了,女神青睞不值錢。
加上括號之后怎么避免產(chǎn)生無限小數(shù)呢?這個我沒有避免,仍然有時候會算出帶小數(shù)的,比較少。
加上括號之前的比較好處理。
由于第一個數(shù)一定不會做被除數(shù)(出現(xiàn)在分母里)
我直接把第2,3,4個數(shù)都構(gòu)造成2^m*5^n,這樣一定可以得到一個有限小數(shù),當(dāng)然,可能存在更好更漂亮的方法。
下面貼一些關(guān)鍵代碼。
static void Main(string[] args){ int num;//The number of expressionsint cnt = 0;int token = 0;var arguments = CommandLineArgumentParser.Parse(args);//command line parameterint anslen = 1;//The number of the answers of expressions that have been used.double[] ansrep;//array to maintain answers that have been usedansrep = new double[1000];ansrep[0] = -23579;if (!arguments.Has("-c"))//如果命令行參數(shù)沒有-cnum = 20;else{ num = int.Parse(arguments.Get("-c").Next);//命令行參數(shù)中得到要輸出的表達式數(shù)量token = 1;}if (token==0){for (int i = 0; i < num; i++){Test t = new Test();//new Test t.opinit();t.GetBracketExp();// t.GetExp();//t.NoRepeatedAns(anslen, ansrep);ansrep[(anslen++) - 1] = t.ansr;t.DispExp();//display expressionConsole.Write("?");double ans = double.Parse(Console.ReadLine());// Console.WriteLine("{0},{1}",ans,t.ansr);if (Math.Abs(ans - t.ansr) < 1e-7)//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-7)//Intenger {Console.WriteLine("Sorry,the answer is {0}", (int)t.ansr);}else//decimal {string floatValue = t.ansr.ToString();floatValue = floatValue.TrimEnd('.', '0');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 = 0; i < num; i++){Test t = new Test();//new Test t.opinit();t.GetBracketExp();// t.GetExp();//t.NoRepeatedAns(anslen, ansrep);ansrep[(anslen++) - 1] = t.ansr;t.DispExpAns(t);//display expression and answer }}Console.WriteLine("Total 20 Problems,you have solved {0}problem(s)", cnt);}}這是我的主函數(shù)。
值得一提的是,讀取命令行參數(shù)也是用的別人代碼,這兩個加起來有接近三百行之多。
?
結(jié)對編程的照片,最后修改一些代碼的格式,找一些bug,我的搭檔王玉玲同學(xué)耐心的給予我?guī)椭椭笇?dǎo),作為一個領(lǐng)航者給出一些方向上的意見。
https://git.coding.net/Rainbows/F4.git
這是我代碼的git地址
結(jié)對編程爭論的點、體會稍后補充
轉(zhuǎn)載于:https://www.cnblogs.com/gaoyb348/p/7638242.html
總結(jié)
以上是生活随笔為你收集整理的软件工程第四周作业之四则运算-C#实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二次作业:王者荣耀软件分析
- 下一篇: Ueditor富文本编辑器