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

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

Student_TRTU

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

Pasha

#2
Очень просто. идешь по строчке слева направо.
Если число - ложишь его в стэк.
Если операция - применяешь ее к 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)
 

grigsoft

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

Student_TRTU

#4
Большое спасибо!!! Все у меня получилось.