Ejemplo n.º 1
0
        }                                          // End function

        /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         *  Function:    recursEval                                          *
         *  Input:       ExpNode                                             *
         *  Output:      double                                              *
         *  Description: A function that recursively traverse the expresssion*
         *               tree making the appropriate operations, and returns *
         *               the result.                                         *
         * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
        public double recursEval(ExpNode currNode)
        {
            if (currNode == null)
            {
                return(0);
            }
            else if (variables.ContainsKey(currNode.getValue()))
            {
                return(variables[currNode.getValue()]);
            }
            else
            {
                switch (currNode.getValue())
                {
                case "+":
                {
                    return(recursEval(currNode.getLeftChild()) +
                           recursEval(currNode.getRightChild()));
                }
                break;

                case "-":
                {
                    return(recursEval(currNode.getLeftChild()) -
                           recursEval(currNode.getRightChild()));
                }
                break;

                case "*":
                {
                    return(recursEval(currNode.getLeftChild()) *
                           recursEval(currNode.getRightChild()));
                }
                break;

                case "/":
                {
                    return(recursEval(currNode.getLeftChild()) /
                           recursEval(currNode.getRightChild()));
                }
                break;
                }
                return(Double.Parse(currNode.getValue()));
            }
        } // End function
Ejemplo n.º 2
0
        /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         *  Function:    eval                                                *
         *  Input:       string                                              *
         *  Output:      double                                              *
         *  Description: A function evaluates the operations in the tree,    *
         *               by calling the recursive eval funcion.              *
         * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
        public double eval()
        {
            double result = 0;

            if (root.getValue() == "")
            {
                Console.WriteLine("No expression tree exists!");
                return(0);
            }
            else
            {
                return(result = recursEval(root)); // Calls recursive function
            }
        }                                          // End function