四则运算-词频统计
Posted 计算机技术—dq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四则运算-词频统计相关的知识,希望对你有一定的参考价值。
本实验用了vs2015自带的cppunit。
[TestMethod()] public void IsNumbericTest() { string input; bool expected; bool actual; //test1 input = "sd13d"; expected = false; actual = Program.IsNumberic(input); Assert.AreEqual(expected, actual); //test2 input = "123.456"; expected = true; actual = Program.IsNumberic(input); Assert.AreEqual(expected, actual); }
该段代码用来测试字符串是否为数字,用bool类型来表示,是数字返回1,不是返回0.
[TestMethod()] public void isOperateorsTest() { string input; bool expected; bool actual; //test1 input = "2"; expected = false; actual = Program.isOperateors(input); Assert.AreEqual(expected, actual); //test2 input = "+"; expected = true; actual = Program.isOperateors(input); Assert.AreEqual(expected, actual); }
该段代码为判断是否为运算符,给出两个测试输入,一个是,一个不是,用人工预测的expected和事实输出的actual进行比较。
public static int[,] m_priorityTable = new int[,] { /*行为入栈运算符,列为栈顶运算符,2表示等于号,1表示大于号, 0表示小于号,-1表示错误的匹配*/ //////* \'+\',\'-\',\'*\',\'/\',\'(\',\')\',\'#\'*/ /*\'+\'*/{ 1, 1, 0, 0, 0, 1, 1}, /*\'-\'*/{ 1, 1, 0, 0, 0, 1, 1}, /*\'*\'*/{ 1, 1, 1, 1, 0, 1, 1}, /*\'/\'*/{ 1, 1, 1, 1, 0, 1, 1}, /*\'(\'*/{ 0, 0, 0, 0, 0, 2, -1}, /*\')\'*/{ 0, 0, 0, 0, -1, 1, 1}, /*\'#\'*/{ 0, 0, 0, 0, 0, -1, 2}, };
这个是从网上下载的符号优先级表,把它存入二维数组中来实现,行列来比较。
[TestMethod()] public void IsPriorityTest() { int input1; int input2; int expected; int actual; //test1 input1 = 3; input2 = 2; expected = 1; actual = Program.IsPriority(input1, input2); Assert.AreEqual(expected, actual); }
测试符号优先级。
[TestMethod()] public void IsPositiveIntTest() { string input; bool expected; bool actual; //test1 input = "-1"; expected = false; actual = Program.IsPositiveInt(input); Assert.AreEqual(expected, actual); //test1 input = "3"; expected = true; actual = Program.IsPositiveInt(input); Assert.AreEqual(expected, actual); }
测试一个数是否是正负数。
public void SplitExpressTest() { string input; Queue<string> expected; Queue<string> actual; //test input = "(0/2)+4+4"; expected = new Queue<string>(); expected.Enqueue("("); expected.Enqueue("0"); expected.Enqueue("/"); expected.Enqueue("2"); expected.Enqueue(")"); expected.Enqueue("+"); expected.Enqueue("4"); expected.Enqueue("+"); expected.Enqueue("4"); expected.Enqueue("#"); actual = Program.SplitExpress(input); CollectionAssert.AreEqual(expected, actual); }
将表达式分割成一个一个的字符存入队列。
[TestMethod()] public void InorderToPostorderTest() { Queue<string> input = new Queue<string>(); List<string> expected; List<string> actual; //test input.Enqueue("0"); input.Enqueue("-"); input.Enqueue("("); input.Enqueue("7"); input.Enqueue("/"); input.Enqueue("2"); input.Enqueue(")"); input.Enqueue("+"); input.Enqueue("4"); input.Enqueue("#"); expected = new List<string>() { "0", "7", "2", "/", "-", "4", "+" }; actual = Program.InorderToPostorder(input); CollectionAssert.AreEqual(expected, actual); }
测试由中缀表达式转换为后缀表达式是否正确。
[TestMethod()] public void IsResultTest() { List<string> input; double expected; double actual; //test input = new List<string>() { "5", "2", "/", "3", "*", "8", "-" }; expected = -0.5; Program.IsResult(input, out actual); Assert.AreEqual(expected, actual); }
测试最后表达式的值是否正确。
预测结果:
结对照片:
感悟:
这个过程以李俞寰同学为主导,我在旁边学习。
以上是关于四则运算-词频统计的主要内容,如果未能解决你的问题,请参考以下文章