本作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2148
结对对象:王硕
一、功能的重点难点,编程收获及运行截图
功能一的重点难点:
1.重点,如何生成随机数和随机运算符
1 int num1 = rand.Next(1, 100); 2 int num2 = rand.Next(1, 100); 3 int num3 = rand.Next(1, 100); 4 int num4 = rand.Next(1, 100); 5 string[] opera = new string[] { "+", "-", "*", "/" }; 6 string op1 = opera[rand.Next(4)]; 7 string op2 = opera[rand.Next(4)]; 8 string op3 = opera[rand.Next(4)];
2.重点,如何定义+-*/的优先级
1 public static int assess(string str) 2 { 3 switch (str) 4 { 5 case "+": 6 return 1; 7 case "-": 8 return 1; 9 case "*": 10 return 2; 11 case "/": 12 return 2; 13 default: 14 return 0; 15 } 16 }
3.难点,判断题目是否重复
1 public static bool IsNotSame(string str, string[] set) 2 { 3 for (int i = 0; i < set.Length; i++) 4 { 5 if (str == set[i]) 6 { 7 return false; 8 } 9 } 10 return true; 11 }
功能二的重点难点
1.重点难点,中缀表达式转后缀表达式并计算
1 public static int ChangeExpression(string zStr) 2 { 3 char a = ' '; 4 String[] sp = zStr.Split(a);//字符串数组sp 5 6 Stack st = new Stack(); //栈st 7 8 Stack st1 = new Stack(); 9 //int j = 0; 10 int res = 0; 11 for (int i = 0; i < sp.Length; i++) 12 { 13 if (sp[i] != "+" && sp[i] != "-" && sp[i] != "*" && sp[i] != "/" && sp[i] != "(" && sp[i] != ")") 14 { 15 st1.Push(sp[i]); 16 //j++; 17 } 18 else 19 { 20 if (st.Count == 0 || IsPriority(sp[i], st.Peek().ToString()) == 1 || sp[i] == "(") 21 { 22 st.Push(sp[i]); 23 } 24 else 25 { 26 while (st.Count != 0) 27 { 28 if (st.Peek().ToString() != "(") 29 { 30 31 res = calc(Convert.ToInt32(st1.Pop().ToString()),
Convert.ToInt32(st1.Pop().ToString()), st.Pop().ToString()); 32 st1.Push(res); 33 //j++; 34 } 35 else if (sp[i] != ")") 36 { 37 break; 38 } 39 else if (sp[i] == ")") 40 { 41 if (st.Peek().ToString() == "(") 42 { 43 st.Pop(); 44 break; 45 } 46 else 47 { 48 res = calc(Convert.ToInt32(st1.Pop().ToString()),
Convert.ToInt32(st1.Pop().ToString()), st.Pop().ToString()); 49 st1.Push(res); 50 } 51 } 52 } 53 if (sp[i] != ")") 54 { 55 st.Push(sp[i]); 56 } 57 } 58 } 59 } 60 while (st.Count != 0) 61 { 62 res = calc(Convert.ToInt32(st1.Pop().ToString()), Convert.ToInt32(st1.Pop().ToString()), st.Pop().ToString()); 63 st1.Push(res); 64 //j++; 65 } 66 67 return res; 68 }
功能三的重点难点 :
1.重点,将题目输出到文件
1 StreamWriter sw = File.AppendText("F:\研一\f4\f4\answer.txt"); 2 3 4 sw.WriteLine("{0,-30}{1}", str, sum); 5 sw.Flush();//清空缓冲区 6 sw.Close();//关闭流
2.难点,判断题目数量是否为正整数
1 System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[0-9]d*$"); 2 return reg1.IsMatch(str);
运行截图:
功能一,功能二运行截图:
功能三运行截图:
编程收获:
1,有了另一个人在一边监督,指导,让枯燥的编程更加的有了趣味性,质量也更好了,没有一个人编程那么多盲点。
2,学会了许多之前不会的问题,比如如何打印,如何不重复输出等等。
二、结对编程的体会及 在编码、争论、复审等活动中花费时间较长,给我较大收获的五事件
1.开始我们对于用哪种语言也产生了分歧,最后选择了大家都熟悉的C#。
2.对于如何把题目打印出来,花了许多的心思,最后找到了成功实现的方法。
3.对输入f4 -c后输入test时总是出错花了许多的时间去调整如何让系统辩认出这不是正整数。
4.如何保证题目不重复。
5.两个人的编程代码风格有所不同,花了许多时间去适应对方。
结对体会:发现了两个人编程的优势,并且觉得团队协作比一个人工作要更有动力更有进展,两个人也在合作中增进了友谊并且取长补短。
三、给出照片1张
四、版本控制