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);
            }
    

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

    预测结果:

    结对照片:

    感悟:

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

  • 相关阅读:
    友盟上报 IOS
    UTF8编码
    Hill加密算法
    Base64编码
    Logistic Regression 算法向量化实现及心得
    152. Maximum Product Subarray(中等, 神奇的 swap)
    216. Combination Sum III(medium, backtrack, 本类问题做的最快的一次)
    77. Combinations(medium, backtrack, 重要, 弄了1小时)
    47. Permutations II(medium, backtrack, 重要, 条件较难思考)
    3.5 find() 判断是否存在某元素
  • 原文地址:https://www.cnblogs.com/duq11/p/5918383.html
Copyright © 2011-2022 走看看