@labsjavascript/calculator v1.0.0
Calculadora Manual en JavaScript con BODMAS
Descripción General
El programa se divide en tres partes principales:
- Conversión de Infijo a Postfijo (
toPostfix
) - Evaluación de Expresión Postfija (
evaluatePostfix
) - Función Principal (
calculate
)
Conversión de Infijo a Postfijo (toPostfix
)
El primer paso es convertir la expresión infija dada (p. ej., 2 + 3 4) en una expresión postfija (p. ej., 2 3 4 +). La notación postfija es más fácil de evaluar porque no requiere que tengamos en cuenta la precedencia de los operadores o los paréntesis; simplemente evaluamos de izquierda a derecha.
Variables
output
: Una lista para almacenar la notación postfija.operators
: Una pila para almacenar operadores temporalmente.precedence
: Un diccionario para la precedencia de operadores.
Luego iteramos sobre los tokens de la expresión infija. Los tokens pueden ser operadores (+, -, ×, ÷) u operandos (números). Si el token es un número, lo añadimos a output
. Si es un operador, lo añadimos a operators
después de vaciar operators
en output
según la precedencia.
Algoritmo
- Iteramos sobre cada token de la expresión infija.
- Si es un número, lo añadimos a
output
. - Si es un operador, vaciamos
operators
enoutput
según la precedencia, y luego añadimos el operador actual aoperators
.
- Si es un número, lo añadimos a
Evaluación de Expresión Postfija (evaluatePostfix
)
Una vez que tenemos una expresión postfija, evaluarla es sencillo. Utilizamos una pila (stack) para hacer un seguimiento de los operandos. Cuando encontramos un número, lo apilamos. Cuando encontramos un operador, desapilamos los dos números superiores, realizamos la operación y apilamos el resultado.
Variables
stack
: Una pila para almacenar números temporalmente.
Algoritmo
- Iteramos sobre cada token de la expresión postfija.
- Si es un número, lo apilamos en
stack
. - Si es un operador, desapilamos los dos números superiores, realizamos la operación y apilamos el resultado.
- Si es un número, lo apilamos en
Función Principal (calculate
)
Esta función primero convierte la expresión infija a postfija usando toPostfix
y luego la evalúa usando evaluatePostfix
.
8 months ago