Концептуальный инфикс в постфикс

Сейчас я готовлюсь к финалу, и я никогда не понимал, как это делать. На одном из моих домашних вопросов меня спросили, являются ли некоторые предоставленные постфиксные выражения действительными или недействительными. Есть ли верный способ узнать это?

Спасибо


person Gary    schedule 08.12.2015    source источник
comment
да. Единственными допустимыми постфиксными операторами являются postfix-++ и postfix---.   -  person emlai    schedule 08.12.2015
comment
Разберите его, и если есть ошибка, то он недействителен.   -  person NathanOliver    schedule 08.12.2015
comment
Например, скажем, на тесте меня спрашивают:   -  person Gary    schedule 08.12.2015
comment
Итак, пример **myValue; неверен, а ++myValue; верен.   -  person Raphael Teyssandier    schedule 08.12.2015
comment
Является ли это выражение: 5 + 9 2 5 + * действительным или недействительным?   -  person Gary    schedule 08.12.2015
comment
Откуда мне знать, что ответить на это на месте? Без компилятора. Это чисто академический, конечно   -  person Gary    schedule 08.12.2015
comment
Извините, я не понял. Так что это выражение недопустимо. 5 9 + 3 * действителен. Вы должны «сохранить/сложить» первые 2 числа, затем поймать оператор и применить его к своему стеку (где у вас есть в этом примере 5 и 9). Затем вы вычислите 5 + 9 и сложите результат в свой стек. Вы сохраните следующий номер и попытаетесь найти оператора. Я надеюсь, что это поможет вам немного понять. Вы можете проверить RPN в Википедии   -  person Raphael Teyssandier    schedule 08.12.2015
comment
Вау, спасибо большое! Безусловно, самое краткое объяснение, которое я нашел.   -  person Gary    schedule 08.12.2015


Ответы (1)


Оцените это. Нажмите каждый номер; когда вы сталкиваетесь с оператором, извлеките два значения, примените к ним оператор и нажмите результат. Не должно быть переполнений стека, а в конце должен быть ровно один элемент стека.

person user207421    schedule 08.12.2015