Sinceramente, creo que es un error de la calculadora, aunque posiblemente se podría defender como algún tipo de concesión de usabilidad. Nota: Estoy limitando mi análisis a las calculadoras de punto flotante. La calculadora programadora se comporta de forma diferente.
Las reglas generales parecen ser
- Si no introduce un número entre la pulsación de una tecla de operador y la pulsación de
=
el número que aparece en la pantalla al pulsar =
se utiliza como operando. En la mayoría de los casos, al pulsar -=
da como resultado cero.
- Después de pulsar
=
una vez, las pulsaciones adicionales aplican el último operador y operando al valor mostrado.
- El error es que si hay un operador de baja precedencia (como
+
) siendo diferido porque un operador de mayor precedencia (como x
) está computando, el operador de baja precedencia se mueve al final de la ecuación para el cómputo inicial.
Ejemplos de la pregunta original
Entrada: 4+3x3x3x=
La salida: 135 Explicación:
- 4+3x pone 4 en la pila mientras calcula el 3x de mayor prioridad...
- 3x3x3 es 27
- Cuando se termina con
x=
tiene que decidir qué hacer para la final x
para completar la ecuación. Lo que hace es reemplazar el operador final con el operador diferido y desplazar el resto hacia la izquierda, luego toma el número actualmente mostrado, que es 27, y lo agrega como operando final.
- tenías 4 + (3x3x3x y una pantalla que mostraba 27
- la calculadora probablemente debería convertir eso en 4 + (3x3x3x27)
- en lugar de eso hace un salto mayor y lo convierte en (4x3x3x3) + 27
- Como he dicho, probablemente sea un error. Terminas con
- 4x3x3x3 + 27 que es 108 + 27 que es 135
Entrada: 4+3x3x3x==
La salida: 3645 Explicación:
- Del ejemplo anterior, la última operación introducida es
x
y el último número utilizado es 27, por lo que se obtiene 135 * 27 que es 3645
Entrada: 4-3x3x3x=
La salida: 81 Explicación:
- Al igual que el primer ejemplo, excepto que 108 - 27 es 81
Entrada: 4+3x3x3x==
La salida: 2187 Explicación:
- Al igual que el segundo ejemplo, excepto que ahora es 81x27 es 2187
Ejemplos adicionales
Nota: Abajo, ^
representa la x y función de potencia, que tiene mayor precedencia que x
.
Entrada: 4+3x2^=
La salida: 38
Explicación:
- La pantalla muestra "2" cuando
=
se pulsa, por lo que los operandos son 4,3,2,2 y los operadores +,x,^ se convierten en x,^,+
- 4*(3^2)+2 -> 4*9+2 -> 36+2 es 38
Entrada: 4+3x2^==
La salida: 1444
Explicación: (4*(3^2)+2)^2 o 38^2
Entrada: 2x2x3^=
La salida: 192
Explicación:
- 3 está en pantalla cuando se pulsa = , ^ tiene precedencia sobre x, que se desplaza al final, por lo que los operandos son 2,2,3,3 y los operadores x,x,^ se convierten en x,^,x
- ((2x2)^3)x3 -> 4^3x3 -> 64*3 es 192
Entrada: 5+7x3^=
La salida: 1718
Explicación: 5x(7^3)+3