Kernel Error
Algoritmos, C/C++, Programacion

Balanceo de expresiones usando pilas en c++

13 de Mayo del 2009 por Kalith · Sin Comentarios 

Buenas
El balanceo de expresiones (no se con que otro nombre se conoce) consiste entre otras cosas, determinar si una expresion matematica esta correcta los parentesis, corchetes, llaves etc, por ejemplo la siguiente esta correcta:
((8+2) – n) * 7

ok haremos un problema bien sencillo tipico en materias como estructura de datos o programacion no numerica, que consiste en determinar si esta o no esta balanceada una expresion, lo haremos muy sencillo solo con parentesis, expliquemos un poco de teoría rapidito: una pila solo agrega elelementos en la parte superior y el elemento a retirar es el que esta mas en el tope, por eso se dice que el ultimo en entrar es el primero en salir.
En este problema lo que haremos es ir agregando parentesis a la pila cada vez que se encuentre en la palabra un ” ( ” y sacamos el elemento cuando encontremos un ” ) ”
Es algo bien bien sencillo, vamos para no complicarnos la existencia usar la stl de c++

#include <iostream>
#include <string>
#include <stack>

using namespace std;

int main(void)
{
	string word;

	stack <char> parentesis; 

	cout << "Ingrese una expresion: ";
	getline(cin, word);

	for(int i = 0; word[i] != '\0'; ++i)
	{
		if(word[i] == '(')
			parentesis.push(word[i]);

		else
			if(word[i] == ')')
				parentesis.pop();
	}

	if((int)parentesis.size() == 0)
	       cout << "Esta balanceada" << endl;

	else
		cout << "No esta balanceada" << endl;

}

ok eso es algo bien básico ya haremos algo mas complejo, todo a su tiempo.
saludos

  • Twitter
  • Facebook
  • MySpace
  • Google Bookmarks
  • del.icio.us
  • Mixx
  • Digg
  • email

Comenta algo

Comparte tu opinión... recuerda que puedes usar BBCode!





BBCode Sencillo soportado.  

    Edición Avanzada desactivada.

Kernel Error
97 intentos de ataques detenidos