Example #1
0
        public static string StkCalculTest(string infix)
        {
            StringBuilder sb     = new StringBuilder();
            var           posfix = SSCLCLTR.ConvertInfixToPosfixTest(infix);

            foreach (var e in posfix)
            {
                if (e is double)
                {
                    sb.AppendFormat("{0} ", e);
                }
                if (e is SSCLCLTR.SimpleBinaryOperator)
                {
                    sb.AppendFormat("{0} ", ((SSCLCLTR.SimpleBinaryOperator)e).expr);
                }
            }
            return(sb.ToString());
        }
Example #2
0
        public static void CalTest1()
        {
            string               exp     = "1 + 3 - (6 - 3 *7)/3";
            ArrayList            posfix  = SSCLCLTR.ConvertInfixToPosfixTest(exp);
            SimpleBinaryTreeNode exptree = SSCLCLTR.MakeExpTree(posfix);

            exptree.Traverse(SimpleBinaryTreeNode.PostOrder, (SimpleBinaryTreeNode nd) => { Console.Write(nd.Data); });
            Console.WriteLine();
            exptree.Traverse(SimpleBinaryTreeNode.InOrder, (SimpleBinaryTreeNode nd) => { Console.Write(nd.Data); });
            Console.WriteLine();
            exptree.Traverse(SimpleBinaryTreeNode.PreOrder, (SimpleBinaryTreeNode nd) => { Console.Write(nd.Data); });
            Console.WriteLine();
            Console.WriteLine(SSCLCLTR.EvaluateExpTreeP2(exptree));
            Console.WriteLine(SSCLCLTR.EvaluateExpTreeP(exptree));
            //EvaluateExpTreeP에 의해서 exptree가 수정되기 때문에 P 쓰고 P2 쓰면 에러가 났던 것.
            //exptree가 수정되지 않는 EvaluateExpTreeP를 생각해봐야...
            Console.WriteLine(1 + 3 - (6 - 3 * 7) / 3);
        }