Вычислить значение выражения в постфиксной форме
В символьной строке записано выражение из цифр и операций в постфиксной форме (знак операции после операндов).
Проверить правильность записи и найти значение выражения.
Пример: выражение (2+3)*4-5*6 записывается в постфиксной форме как 23+4*56*-
Помогите пожалуйста с задачей! Буду премного благодарен
Ответы (2 шт):
Автор решения: KoVadim
→ Ссылка
Вам просто нужно сделать обычный Алгоритм_сортировочной_станции
Если поищите внимательно, то найдете даже реализации.
Автор решения: Qwertiy
→ Ссылка
Числа - в стек, операции выполняешь над двумя последними значениями в стеке и результат помещаешь обратно. В качестве стека можно использовать массив достаточного размера.
function calc(s) {
var st = []
for (var t of s) {
switch(t) {
case "+":
var r = st.pop(), l = st.pop()
st.push(l + r)
break
case "-":
var r = st.pop(), l = st.pop()
st.push(l - r)
break
case "*":
var r = st.pop(), l = st.pop()
st.push(l * r)
break
case "/":
var r = st.pop(), l = st.pop()
st.push(l / r)
break
default:
st.push(+t)
}
}
if (st.length !== 1) {
throw new Error("Invalid expression")
}
return st.pop()
}
console.log(calc("23+4*56*-"))