Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/03/2013, 05:33
efdarcy09
 
Fecha de Ingreso: marzo-2013
Mensajes: 10
Antigüedad: 11 años, 8 meses
Puntos: 0
Busqueda Duda sobre c++. Se pierden datos al salir de un while.

Hola familia.
Estoy desarrollando un programa en c++ y me ocurre algo muy raro. Os dejo el código:

arbol * dePostaArbol(string cadena){
string buf;
pilaArbol stack_tree= pilaArbol();

arbol * salida = NULL;
arbol* pab;
stringstream ss (cadena);
while (ss >> buf){
if (buf.compare("DIA")==0){//OPERADOR DIAMANTE
insertarOperadorEnPila(stack_tree,-1);//DIA == -1
}else if (buf.compare("BOX")==0){//OPEEADOR CAJA
insertarOperadorEnPila(stack_tree,-2);//BOX == -2
}else if (buf.compare("NOT")==0){//NEGACION
insertarOperadorEnPila(stack_tree,-3);//DIA == -3
}else if (buf.compare("AND")==0){//OPERADOR AND1
insertarOperadorEnPila(stack_tree,-4);//DIA == -4
}else if (buf.compare("OR")==0){//OPERADOR OR
insertarOperadorEnPila(stack_tree,-5);//DIA == -5
}else if (buf.compare("IMPLIES")==0){//IMPLICACION
insertarOperadorEnPila(stack_tree,-6);//DIA == -6
}else{//OPERANDO...

int valorOperador;
pab= new arbol();
valorOperador=codifica(buf);
pab->setValor(valorOperador);
stack_tree.Push(pab);
}
pPila=&stack_tree;
}
if (stack_tree.isEmpty()){
cout<<"Error: El algoritmo de conversion de postfija a arbol ha fallado..."<<endl;

stack_tree.destruir();
exit (-1);

}else{
salida=stack_tree.Pop();
if(stack_tree.isEmpty()){
stack_tree.destruir();
return salida;
}else{
cout<<"Error: El algoritmo de conversion de postfija a arbol ha fallado..."<<endl;
exit (-1);
stack_tree.destruir();
}
}
}


El problema está en que cuando va a salir del bucle while, se pierden todos los datos de la pila. Justo antes de salir del while la pila contiene lo que debe, es decir, que el programa funciona bien, pero pierde los datos al salir del while... Y no se a que se debe... Tal vez sea algo de c++ que no sepa.... Gracias a todos de antemano.