Foros del Web » Programación para mayores de 30 ;) » C/C++ »

No responde el do-while

Estas en el tema de No responde el do-while en el foro de C/C++ en Foros del Web. Tengo un do while que quiero que repita cuendo no encuentre un string, me podrás decir si ves el error? Por que no se repite ...
  #1 (permalink)  
Antiguo 14/05/2011, 04:23
 
Fecha de Ingreso: enero-2010
Mensajes: 49
Antigüedad: 14 años, 3 meses
Puntos: 2
Exclamación No responde el do-while

Tengo un do while que quiero que repita cuendo no encuentre un string, me podrás decir si ves el error? Por que no se repite y me estoy volviendo loco por que no veo el error.

Código C++:
Ver original
  1. do {
  2. for(i; i < contador; i++){
  3.  
  4.     getline(archivo_info, nombre1[i]);
  5.     archivo_info >> id1[i];
  6.     archivo_info >> deuda1[i];
  7.     archivo_info >> credito1[i];
  8.  
  9.     if(id1[i] == identificar){
  10.         encontrada = true;
  11.         break;
  12.         }
  13.     else if (++i == contador){
  14.         //Aqui le sume uno al indice para que cuando sea la ultima iteracion y no haya ninguna contraseña
  15.         //igual de un mensaje de que la contraseña ingresada es invalida
  16.         cout << "Su contraseña no coincide con nunguna en nuestra base de datos.\n";
  17.         cout << "Entre otra contraseña: ";
  18.         cin >> identificar;
  19.         encontrada = false;
  20.         archivo_info.close();
  21.         archivo_info.open(informacion);
  22.         i = 0;
  23.         }
  24.        
  25. }
  26. }while(encontrada == false);

Gracias!
  #2 (permalink)  
Antiguo 14/05/2011, 04:42
 
Fecha de Ingreso: abril-2011
Mensajes: 88
Antigüedad: 13 años
Puntos: 24
Respuesta: No responde el do-while

Código:
    if(id1[i] == identificar){
        encontrada = true;
        break;
        }
    else if (++i == contador){
Me parece que el error puede estar aquí. Primero el break no es necesario ya que una vez encontrada=true, se saldrá del while. Lo segundo es que ++i va a incrementar i, y eso no es lo que quieres, mejor cambia eso por
Código:
else if(contador== i+1){
que hace el mismo chequeo sin cambiar el valor de i.
__________________
Foros Desarrollo de Juegos
  #3 (permalink)  
Antiguo 14/05/2011, 05:21
 
Fecha de Ingreso: enero-2010
Mensajes: 49
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: No responde el do-while

Gracias por la sugerencia, no la había considerado. De todas formas no logro hacer que funcione, aunque ya vi cual es el error...

separe todo lo que tenía:
Código C++:
Ver original
  1. for(i; i < contador; i++){
  2.  
  3.     getline(archivo_info, nombre1[i]);
  4.     archivo_info >> id1[i];
  5.     archivo_info >> deuda1[i];
  6.     archivo_info >> credito1[i];
  7.    
  8.     }
  9.  
  10. do{
  11. for(i=0; i < contador; i++){
  12.        
  13.     if(id1[i] == identificar){
  14.         encontrada = true;
  15.         break;
  16.         }
  17.     else if ((1+i) == contador){
  18.         //Aqui le sume uno al indice para que cuando sea la ultima iteracion y no halla ninguna contraseña
  19.         //igual de un mensaje de que la contraseña ingresada es invalida
  20.         cout << "Su contraseña no coincide con ninguna en nuestra base de datos.\n";
  21.         cout << "Entre otra contraseña: ";
  22.         cin >> identificar;
  23.         encontrada = false;
  24.         }
  25.     }}while(encontrada == false);

Gracias!

Etiquetas: responde
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:34.