Fallo c++.

Alguien ve algun fallo grave en este codigo.
Eliminacion de Simbolos Inutiles de una Gramatica. PARTE 2

while (J.size() >= 0 ) {
for (set<char>::iterator kk = J.begin(); kk!= J.end(); kk++){
J.erase(*kk);
aux.insert(*kk);
for (set<Produccion, classcomp>::iterator ii = Prod.begin(); ii != Prod.end(); ii++){
Produccion p;
p = *ii;
string str = p.GetDerecha();
if (aux.find(p.GetIzquierda()) != aux.end()) {
for (int i = 0; i < p.GetDerecha().length(); i++) {
if (NoTerminales.find(p.GetNoterminalDerecha(i)) != NoTerminales.end()) {
if (VV.find(p.GetNoterminalDerecha(i)) != VV.end())
aux.clear();
else {
VV.insert(p.GetNoterminalDerecha(i));
J.insert(p.GetNoterminalDerecha(i));
aux.clear();
}
}
if ((p.GetNoterminalDerecha(i) < 'A'))
T.insert(p.GetNoterminalDerecha(i));
}
}
}
}
}

Parece que no entra nunca en el while. Un saludo
Si no entra al while entonces no es problema del codigo de dentro del while, en todo caso del bucle, va algun otro parametro dentro de size tal vez?
Los rumores dicen que si compila es bueno usar el modo debug punto a punto xD
No se depurar. ¿Te paso el programa y me lo miras?
Lo curioso es que justo antes del while coloco un cout << "hola"; y no m imprime nada, pero si coloco cout << "hola" << endl; entonces si
Lo curioso es que justo antes del while coloco un cout << "hola"; y no m imprime nada, pero si coloco cout << "hola" << endl; entonces si


Normal, std::cout es "buffered". Eso ocurriría así con o sin while.

HTH, HAND.
4 respuestas