Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Значение префиксного выражения, Использовать стек 
V
    Опции темы
14SatanA88
Дата 19.7.2011, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



Доброго времени суток, уважаемые форумчане.

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

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



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

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

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



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

Это сообщение отредактировал(а) 14SatanA88 - 19.7.2011, 01:32
PM MAIL ICQ   Вверх
14SatanA88
Дата 19.7.2011, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



все, сам уже сделал

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

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

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.