Programa que reconoce parentesis corchetes y llaves como delimitadores

Iniciado por drummfer99, 26 Septiembre 2015, 23:14 PM

0 Miembros y 2 Visitantes están viendo este tema.

drummfer99

tengo una practica escolar que consiste en hacer un programa que dada una expresion algebraica te diga si tu expresion es valida o te falto alguna parentesis llave o corchete si pueden nada mas ocupo el pseudocodigo y la logica ya que el chiste es que lo aprenda gracias ah por cierto es con pilas.

ivancea96

Es con pilas, porque con pilas es la mejor manera de hacerlo. Basta meter en la pila los que vas encontrando de abertura. Cuando encuentres uno de cierre, mira si en la pila está el equivalente, pero de abertura. Si está, lo quitas, y sigues. Si no está, es incorrecto. Paréntesis, llaves, corchetes, comillas dobles y simples.

drummfer99

me podrias ayudar con un poco de codigo solo tengo idea de que la pila con que tenga las funciones de insertar pila vacia y pila llena con eso se puede pero no se como implementarlas

ivancea96

Recorres toda la cadena, y cada vez que encuentres un elemento de apertura, lo introduces en la pila. Luego, cuando encuentres un elemento de cierre, miras si es del mismo tipo que el último de la pila. Si es del mismo tipo, quitas el último elemento de la pila. Sinó, significa que la cadena es incorrecta.
Si llegas al final sin ningún error y con la pila vacía, entonces la cadena es correcta. Sinó, es incorrecta.

La teoría está dicha. Ahora ponte a estructurar el código. Si ya tienes una estructura pila y sus funciones (o una clase en caso de C++), desarrolla el programa, al menos todo lo que puedas. Lo pruebas, y ves si funciona. Si llegas a un punto en el que no sabes qué va mal, ponlo aquí.

DarK_FirefoX

Cita de: drummfer99 en 29 Septiembre 2015, 04:07 AM
me podrias ayudar con un poco de codigo solo tengo idea de que la pila con que tenga las funciones de insertar pila vacia y pila llena con eso se puede pero no se como implementarlas

Sigue los consejos de @ivancea96

Y sobre la implementación de la pila, imagínala como una estructura de tipo colección (puede ser un array) con un propiedad que represente un puntero al elemento en la posición en el tope de la pila, y a partir de ahí puedes implementar las funciones para Push (empilar), Pop (desempilar), Peek (revisar el tope de la pila), Count (saber la cantidad de elementos)

Espero esto te sirva!

Salu2s