Рассмотрим, что происходит, когда eval_post()
дается 213*102/+
для работы.Давайте начнем с середины, с «1» после звездочки.«1» - это цифра, поэтому нажмите ее [стек заканчивается: 1].Точно так же 0 и 2 выталкиваются [стек заканчивается: 1, 0, 2].Затем встречается символ деления, поэтому выведите 2 и 0, затем нажмите 0/2 = 0 [стек заканчивается: 1, 0].Наконец, встречается символ сложения, поэтому выведите 0 и 1, затем нажмите 1 + 0 = 1, после чего вы получите ответ.
Один из симптомов вашей проблемы состоит в том, что, если все работает, стекдолжен быть пустым, когда eval_post()
возвращается.Тем не менее, он не пустой, если ваш инфикс содержит чисел с более чем одной цифрой .Обратите внимание, что «10» помещается в стек как два числа: «1» и «0».Вам нужно нажать значение 10.
Есть также некоторые проблемы со стилем в коде, но это, кажется, основная функциональная проблема.