АИ
Андрей Иванов

(ОПН) Обратная польская запись - как реализовать алгоритм выражения 2*-(3+3)



я не как не пойму, как именно в такой форме работает алгоритм опн

умножить минус у меня не как не вяжутся

да! мне нужно ЭТО сделать в опн.

а откуда у вас ноль появился?

я не могу спорить так как не понимаю его до конца. поэтому спрошу - что в моей логике не так?
читаем 2
выход: 2
стек:

читаем *
выход: 2
стек: *

читаем -
выход: 2
стек: *-

читаем (
выход: 2
стек: *-(

читаем 3
выход: 2,3
стек: *-(

читаем +
выход: 2,3
стек: *-(+

читаем 3
выход: 2,3,3
стек: *-(+

читаем )
выход: 2,3
стек: *-(+ ..и от сюда начинается выталкивание
2,3,3,+,-*

и не получается)

выражение такое 2* -(3+3) и какой бы альтернативный вид оно не могло принять, коду надо будет все
равно разбирать 2* -(3+3)

вот так я и знал что только извращениями можно из этой ситуации выйти)

Спасибо Большое!!!

буду ноль приспосабливать, сам бы не додумался ...ещё раз Спасибо!

Сергей
Сергей

Насколько я знаю, в ОПН не может быть скобок. Тебе это выражение в ОПН надо переделать или что? Если В ОПН переделать, то это будет 033+-2*. То есть вначале сложили тройки, потом из нуля вычли 6, получили -6, а дальше -6*2=-12. Ноль, эт я если правильно понял первое выражение: 2* -(3+3)=2*(-6)=-12. Выражение такое? Вообще 0 - это чтоб инвертнуть 6 в минус 6, я вычел из нуля. В ОПН ж нет записи отрицательных чисел в лоб. Должна быть пара операндов, если минус напишешь просто, то ошибка будет - ты будешь иметь ввиду унарный минус, а работать он будет как бинарный, что будет ошибкой.
2,3,3,+,-* - это равносильно выражению: 2-(3+3)* - видишь - у тебя получился оператор умножения "лишний"? - потому что ты унарный минус в первоначальном выражении заменил на бинарный. Я как еще один оператор ввел ноль, чтобы "Сэмулировать" унарный минус бинарным, т. е. -6=0-6. А вообще полазь в инете - алгоритмы готовые найдешь. Да не за что )).

Похожие вопросы
Запись выражения в Pascal !!!СРОЧНО !!!
Обратная польская запись для алгебраического выражения (a+b)*d/(3*d-a*b) имеет вид .
Как реализовать запись аудио (т. е. речь с микрофона) на сайте?
помогите составить алгоритм программы : S=1- 1/(2^2) + 1/(3^2) - 1/(4^2) + 1/(5^2)
Нужен алгоритм перевода выражения из префиксной формы в постфиксную, описанный на естественном языке.
Что обозначает в команде алгоритма В: =ЦЕЛ ( (А+В) /2)
ОБРАТНАЯ ПОЛЬСКАЯ ЗАПИСЬ (ОПН) - 2+2-3*6+1-2*2+3 помогите пожалуйста разложить это выражение поэтапно
Как в программе Алгоритм 2 создать задачу?
определения правильности скобочного выражения на основе стека, реализованного с помощью массива с++
php, форма post, запись в текстовый документ, Помогите реализовать