"Hola"
Necesito ayuda con un proyecto, el cual consiste en lo siguiente:
Se ingresan una operación aritmética como por ejemplo esta
(8-3)*(4*2).
Eso lo ingresamos a un arreglo, yo lo coloco en el arreglo de la siguiente forma
@Dats=split("",$cadena);con eso ya tengo carácter en un arreglo. Pero lo que nos piden es:
Using text Syntax Highlighting
posición del arreglo=---0 1 2 3 4 5 6 7 8 9 10
-------------arreglo=---( 8 - 3 ) * ( 4 * 2 )
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
entonces primero tiene que buscar donde estén los paréntesis para operar lo que se encuentra dentro de ellos.
Adentro de los paréntesis revisa, el primero es número y como lo es lo mete en un arreglo (nos explicaron que pasa a ser posfijo) después se espera un signo y ese signo lo ingresa a una variable (si no es signo tiene que mostrar error) después del signo se espera un número y lo mete al mismo arreglo del anterior, en la siguiente posición del arreglo se ingresa el signo que se guardó en la variable.
Para que se entienda mejor quiere lo siguiente:
Que dé esto
Using text Syntax Highlighting
Infijo[
-------posición del arreglo=----0 1 2 3 4 5 6 7 8 9 10
--------------------arreglo=----( 8 - 3 ) * ( 4 * 2 )
]
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Pase a esto
Using text Syntax Highlighting
Posfijo[
posición del arreglo=---0 1 2 3 4 5 6
arreglo=----------------8 3 - 4 2 * *
]
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
ya teniendo el Posfijo tomaría el primero con utilizando pop y el segundo estos dos datos se ingresarían a una variable y ahora se revisa qué signo es el que está en segunda posición con un if() pienso yo. Ya teniendo este valor se ingresa a otro arreglo vertical (pileta) que seria algo así
Using text Syntax Highlighting
|4 | |
|3 | |
|2 | |
|1 | |
|0 | 5| <---- valor del resultado
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
ahora realizaría lo que sigue y quedaría así
Using text Syntax Highlighting
|4 | |
|3 | |
|2 | |
|1 | 5|
|0 | 8| <---- valor del resultado
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
para meterlo sería con un push(), verdad.
El último que entra es el primero que sale.
Entonces estos dos valores se les asigna a dos variables
T1 =8 y T2 = 5entonces ahora solo verificaría el último signo en el posfijo que es "*" y multiplica las variables T1 * T2 y el resultado lo ingresa otra vez en el arreglo anterior
Using text Syntax Highlighting
|4 | |
|3 | |
|2 | |
|1 | |
|0 |40| <---- valor del resultado
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
y por último se imprimiría 40.
Una restricción es que solo se va a ingresar número de 0 a 9 y las operaciones a realizar pueden ser sin paréntesis.
Si alguien me pudiera ayudar le estaría muy agradecido porque no sé cómo hacer el algoritmo, tal vez me pueden hacer el favor de explicarme cómo hacerlo.
"Si no entienden algo de lo que coloqué, por favor, dígame"
¡Muchas Gracias!