• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

ОПЗ (обратная польская запись)

  • Автор темы Student_TRTU
  • Дата начала
S

Student_TRTU

Здравствуйте вот нашел в нете алгоритм ОПЗ и захотелось его освоить. Но не могу понять как можно сделать чтобы по данной ОПЗ решать примеры.
Например:
Нам в дана такая строчка 3-4*(1+2) после превода получилась вот такая запись 3412+*- как теперь из этой записи символы перевести в числа и операции и решить этот пример чтобы в итоге получилось
-9.
 
P

Pasha

Очень просто. идешь по строчке слева направо.
Если число - ложишь его в стэк.
Если операция - применяешь ее к 2-м верхним элементам стека, результат помещаешь обратно в стек
Код:
Шаг Элемент Стэк
1	3	  3
2	4	  3 4
3	1	  3 4 1
4	2	  3 4 1 2
5	+	  3 4 3(1+2)
6	*	  3 12(4*3)
7	-	  -9(3-12)
 
G

grigsoft

И не понимай слово запись буквально - конечно из строки "3412+*-" никак не выделишь числа - 4 числа там лежат или только 1? Польская запись определяет порядок значений, а не форматирование в строке. Если тебе надо именно в строку представить результат, разделяй значения хотя бы пробелом - чтобы можно было потом распарсить ее.
 
S

Student_TRTU

Большое спасибо!!! Все у меня получилось.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!