Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Значение префиксного выражения


Автор: 14SatanA88 19.7.2011, 01:19
Доброго времени суток, уважаемые форумчане.

Помогите разобраться, как вычислить значение префиксного выражения, используя стек.

Не могу понять сам алгоритм.



Вот что накопал в интернетах:

http://www.spsu.edu/cs/faculty/bbrown/web_lectures/postfix/ - постфикс, а мне надо префикс

http://wiki.answers.com/Q/What_is_an_algorithm_to_evaluate_prefix_expression_using_stack_with_example - вроде алгоритм описан, но я все равно не все понял.



Очень рассчитываю на помощь.

Автор: 14SatanA88 19.7.2011, 13:47
все, сам уже сделал

вот код, если кому надо
Код

            int op1, op2, res = 0;

            Console.WriteLine("Input expression. Use space for split operands: ");
            string s = Console.ReadLine();
            string[] arg = s.Split(' ');
            Array.Reverse(arg);

            Stack<string> stack = new Stack<string>();

            foreach (string str in arg)
            {
                if (!(str == "+" || str == "-" || str == "*" || str == "/"))
                {
                    stack.Push(str);
                }
                else
                {
                    op1 = int.Parse(stack.Pop());
                    op2 = int.Parse(stack.Pop());
                    if (str == "+") res = op1 + op2;
                    if (str == "-") res = op1 - op2;
                    if (str == "*") res = op1 * op2;
                    if (str == "/") res = op1 / op2;
                    stack.Push(res.ToString());
                }
            }

            Console.WriteLine("Result = "+stack.Peek());

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)