@bakunovdo

Реализицая обратной польской нотации, как быть с унарным минусом?

Я пытаюсь решить одну кату, где надо распасить строчку с математическим выраженем.
И нашел что подобное решается с помощью ОПН, ее и взял за основу, но с унарным минусом там предлагается либо замена символа либо преобразования выражения, например для -3 в ОПН -> 0 3 - . Я остановился на замене символа, заменю на ±.
Проблема с выражениями вида: -(-1 + 2) , в моей реализации польской это будет как ± ± 1 2 +. как вставлять правильно унарник?
И приложу свой код. Я просто очень хочу уже решить эту задачу с парсером. Пару дней ее мучаю. В кате осталось всего 2 теста пройти, надо как то учесть унарный перед скобками, как не знаю. Я так понимаю у меня не там вставляется ±.
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Если обратная нотация, то знак ± должен, как и бинарные операции, идти после операндов. Тогда -(-1 + 2) становится 1 ± 2 + ±. По ± надо менять знак числа на верхушке стека.

Соответственно в парсере, если видите унарный минус перед скобками, то переводите скобки в нотацию, а потом дописываете ±.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы