Advertisement
nq1s788

Untitled

Oct 27th, 2024
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.08 KB | None | 0 0
  1. Еще одна классическая задача на стек. Пойдем по выражению слева направо, на стек будем складывать все числа которые нам поступают, на каждой операции возьмем верхние числа со стека, проделаем заданную операцию с ними, положим результат на стек. В конце на стеке должно остаться одно число -- результат всех операций.
  2.  
  3. Пример кода на python:
  4. def solve(a, b, sign):
  5.     if (sign == '+'):
  6.         return a + b
  7.  
  8.     elif (sign == "-"):
  9.         return a - b
  10.  
  11.     elif (sign == "*"):
  12.         return a * b
  13.  
  14.     else:
  15.         return 0
  16.  
  17.  
  18. stack = []
  19. postfixstr = input().split()
  20.  
  21. for i in range(len(postfixstr)):
  22.     if postfixstr[i].isdigit():
  23.         stack.append(int(postfixstr[i]))
  24.  
  25.     else:
  26.         b = stack.pop()
  27.         a = stack.pop()
  28.         stack.append(solve(a, b, postfixstr[i]))
  29.  
  30. print(stack.pop())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement