zoukankan      html  css  js  c++  java
  • 四则运算-词频统计

    本实验用了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);
            }
    

     测试最后表达式的值是否正确。

    预测结果:

    结对照片:

    感悟:

    这个过程以李俞寰同学为主导,我在旁边学习。

  • 相关阅读:
    unity3d动态加载资源
    u3D大场景的优化
    C#代码规范
    游戏模型规范
    vue prop不同数据类型(数组,对象..)设置默认值
    vue-router实现页面的整体跳转
    Vue实现组件props双向绑定解决方案
    电脑连接并调试手机浏览器的网页
    对象里面的属性有值但是打印出来是空的,获取不到
    vue-cli sass安装
  • 原文地址:https://www.cnblogs.com/duq11/p/5918383.html
Copyright © 2011-2022 走看看