Пояснение, как должен работать калькулятор RPN в случае одного аргумента и операнда (делить или умножать) - PullRequest
2 голосов
/ 01 апреля 2020

Я пытаюсь понять, как калькулятор RPN должен работать в случае одного аргумента и одного операнда, например. делить или умножать.

Я знаю, как это должно работать в простых случаях, например.

> 1 
1
> 3
3
> +
result: 4  

explanation:  1 + 3 = 4

Очевидно, как это работает

Случай 2 сложнее, но также и хорош clear

7 2 3 * −
result: 1 
explanation:  7 - (2 * 3) = 1

Итак, я знаю, как это работает в принципе.

Меня интересуют эти варианты использования.

4 -
result: -4

Так что в случае одного аргумента , это должно преобразовать число в отрицательную форму. В случае '+' мы ничего не будем делать

Но как оно должно вести себя в этих случаях?

4 /

или

4 * 

Должен ли я напрямую сделать математическую операцию с тем же номером? Например:

4 /   ===  4 / 4
4 *   ===  4 * 4

Спасибо за любую помощь!

PS Извините за глупый вопрос, но я впервые столкнулся с этой вещью

ОБНОВЛЕНИЕ: Кроме того, как насчет случай использования, когда пользователь вводит неверные данные. Например. что-то вроде этого?

1 + 3 - 5 * 3 /

По умолчанию он завершает процесс или не позволяет пользователю продолжать вводить неверные данные, пока не будет введен правильный и действительный аргумент?

1 Ответ

1 голос
/ 01 апреля 2020

С RPN у вас обычно есть некоторые значения в регистрах / стеке.

А также вы получаете ключ CHS для изменения знака.

Если вы хотите сделать свой калькулятор, вы можете указать функцию, как вы хотите, так как вы хотите принять - в качестве оператора и для изменения знака.

Если у вас есть только одно значение в стеке, вы можете опустить бинарные операторы и разрешить только унарные операторы.

...