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

Problema con un bucle infinito en un while

Estas en el tema de Problema con un bucle infinito en un while en el foro de C/C++ en Foros del Web. Hola, el problema que tengo es el siguiente: en el case 4 a la hora de ingresar el ID de un socio, el programa me ...
  #1 (permalink)  
Antiguo 03/07/2011, 15:47
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Pregunta Problema con un bucle infinito en un while

Hola, el problema que tengo es el siguiente: en el case 4 a la hora de ingresar el ID de un socio, el programa me tiene que mostrar a que persona pertenece si no me dice que hay un error y me muestra una opcion de ingresar el ID hasta que sea correcto, el error que tengo y no he podido solucionar, es que cuando ingreso un ID correcto me muestra a quien pertenece pero me hace un bucle infinito en ese dato y jamas sale del while, me podrian ayudar con ese error?

Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6.  typedef struct{
  7.     int ISBN;
  8.     char nombre_libro[100];
  9.     char editorialfadeIn[100];
  10.     int numero_edicionfadeIn;
  11.     char autorfadeIn[100];
  12.     int identificadorfadeIn;
  13.     char nombrefadeIn[100];
  14.     char apellidosfadeIn[100];
  15.     int fecha_registrofadeIn;
  16.     int estadofadeIn;
  17.  } datos_libros;
  18.  
  19.  
  20.  int buscar(datos_libros vector[],int longitud, int valor){
  21.  
  22.    for(int i=0;i<longitud;i++){
  23.       if (vector[i].ISBN == valor)
  24.           return i;
  25.    }
  26.    return -1;
  27.  }
  28.  
  29.  
  30. int main ()
  31. {
  32.    
  33.     datos_libros libros[4];
  34.     int opcion;
  35.     int i = 0;
  36.     int j = 0;
  37.     int ISBN=0;
  38.     int socio;
  39.     int k;
  40.     int ID;
  41.     int cantidad_libros;
  42.     int cantidad_socios;
  43.     string respuesta;
  44.    
  45.    
  46.     while(respuesta!="N" && respuesta!="n")
  47.     {
  48.        system("color 0f");
  49.        cout<<"******Biblioteca Publica^El Raton Feliz^******"<<endl;
  50.        cout<<endl;
  51.        cout<<"Digite #1, para ingresar nuevo socio."<<endl;
  52.        cout<<"Digite #2, para cambiar estado del socio."<<endl;
  53.        cout<<"Digite #3, para ingresar nuevo libro."<<endl;
  54.        cout<<"Digite #4, para prestar libro."<<endl;
  55.        cout<<"Digite #5, pàra recibir libro."<<endl;
  56.        cout<<"Digite #6, para desplegar lista de libros."<<endl;
  57.        cout<<"Digite #7, para desplegar lista de socios."<<endl;
  58.        cout<<"Digite #8, para desplegar lista de libros prestados actualmente"<<endl;
  59.        cout<<endl;
  60.        cout<<"Que opcion desea realizar?"<<endl;
  61.        cin>>opcion;
  62.        system("cls");
  63.        
  64.        
  65.         switch(opcion){
  66.              
  67.          case 1:
  68.               if(i<4)
  69.               {
  70.               cout<<"******Ingreso de nuevo socio******"<<endl;
  71.               cout<<endl;
  72.               cout<<"Ingrese nombre del socio # "<<i<<":"<<endl;
  73.               cin>>libros[i].nombrefadeIn;
  74.               cout<<endl;
  75.               cout<<"Ingrese apellidos del socio:"<<endl;
  76.               cin>>libros[i].apellidosfadeIn;
  77.               cout<<endl;
  78.               cout<<"Ingrese cedula:"<<endl;
  79.               cin>>libros[i].identificadorfadeIn;
  80.               cout<<endl;
  81.               cout<<"Ingrese fecha de registro:(formato dd/mm/aaaa)"<<endl;
  82.               cin>>libros[i].fecha_registrofadeIn;
  83.               cout<<endl;
  84.               cout<<"Ingrese #1 para usuario activo o ingreso #2 para usuario inactivo:"<<endl;
  85.               cin>>libros[i].estadofadeIn;
  86.               cout<<endl;
  87.               system("cls");
  88.               if(libros[i].estadofadeIn==1)
  89.               {
  90.                 system("color 0e");
  91.                 cout<<"El socio de nombre "<<libros[i].nombrefadeIn<<" esta activo!!!"<<endl;
  92.                 system("pause");
  93.                 system("cls");
  94.                 }
  95.                 else
  96.                 {
  97.                     system("color 0e");
  98.                     cout<<"El socio de nombre "<<libros[i].nombrefadeIn<<" esta inactivo!!!"<<endl;
  99.                     system("pause");
  100.                     system("cls");
  101.                     }
  102.                     cout<<endl;
  103.               i=i+1;
  104.               cantidad_socios=i;
  105.               }
  106.               else
  107.               {  
  108.                   system("color 4e");
  109.                   cout<<"ERROR/No se pueden ingresar mas datos/Memoria de socios llena"<<endl;
  110.               system("pause");
  111.                }
  112.                break;
  113.                
  114.                case 2:
  115.                     cout<<"*******Cambio de estado de los socios******"<<endl;
  116.                     cout<<endl;
  117.                     cout<<"Ingrese numero de socio(valido de 0 a 3)"<<endl;
  118.                     cin>>socio;
  119.                     cout<<endl;
  120.                     k=socio;
  121.                     if(k>3)
  122.                     {
  123.                            system("cls");
  124.                            system("color 0b");
  125.                            cout<<"ERROR//Numero de socio inexistente//Ingrese un numero de socio valido!!!"<<endl;
  126.                            cout<<endl;
  127.                            system("pause");
  128.                            system("cls");
  129.                            
  130.                            break;
  131.                            }
  132.                     if(libros[k].estadofadeIn==1)
  133.                     {
  134.                        cout<<"El socio #"<<k<<" de nombre: "<<libros[k].nombrefadeIn<<" se encuentra activo"<<endl;
  135.                        cout<<endl;
  136.                        cout<<"Para cambia el estado del socio a inactivo, presione #2!!"<<endl;
  137.                        cin>>libros[k].estadofadeIn;
  138.                        cout<<endl;
  139.                        cout<<"Cambio de estado del socio a inactivo, fue hecho satisfactoriamente!!"<<endl;
  140.                        system("pause");
  141.                        system("cls");
  142.                        }
  143.                        else
  144.                        {
  145.                            cout<<"El socio #"<<k<<" de nombre: "<<libros[k].nombrefadeIn<<" se encuentra inactivo"<<endl;
  146.                            cout<<endl;
  147.                            cout<<"Para cambiar el estado del socio a activo, presione#1!!"<<endl;
  148.                            cin>>libros[k].estadofadeIn;
  149.                            cout<<endl;
  150.                            cout<<"Cambio de socio a activo, fue hecho satisfactoriamente!!"<<endl;
  151.                            system("pause");
  152.                            system("cls");
  153.                            }
  154.                            cout<<endl;
  155.                            
  156.                            
  157.                            
  158.                     break;
  159.                    
  160.            case 3:
  161.  
  162.                if(j<4)
  163.                        {
  164.                        cout<<"******Ingreso de Nuevo Libro******"<<endl;
  165.                        cout<<endl;
  166.                        cout<<"Ingrese el nombre del libro nuevo # "<<j<<":"<<endl;
  167.                        cin>>libros[j].nombre_libro;
  168.                        cout<<endl;
  169.                        cout<<"Ingrese numero de edicion:"<<endl;
  170.                        cin>>libros[j].numero_edicionfadeIn;
  171.                        cout<<endl;
  172.                        cout<<"Ingrese editorial:"<<endl;
  173.                        cin>>libros[j].editorialfadeIn;
  174.                        cout<<endl;
  175.                        cout<<"Ingrese el ISBN del libro:"<<endl;
  176.                        cin>>ISBN;
  177.                        cout<<endl;
  178.                        while (buscar(libros,j,ISBN)!=-1){
  179.                          cout << "ERROR//Ya has introducido un libro con ese ISBN" << endl;  
  180.                          cout<<endl;        
  181.                          cout<<"Ingrese el ISBN correcto del libro:"<<endl;
  182.                          cin>>ISBN;
  183.                          system("cls");
  184.                        }        
  185.                        
  186.                        libros[j].ISBN = ISBN;
  187.                        j=j+1;
  188.                        cantidad_libros=j;
  189.                        }
  190.                        else
  191.                        {   system("color 0c");
  192.                            cout<<"ERROR//Memoria de libros llena"<<endl;
  193.                            system("pause");
  194.                            }
  195.                            break;
  196.                            
  197.                    case 4:
  198.                         cout<<"******Prestamo de libro******"<<endl;
  199.                         cout<<endl;
  200.                        
  201.                        cout<<"Ingrese la ID de la persona en cuestion:"<<endl;
  202.                        cin>>ID;
  203.                        
  204.                         while(libros[i].identificadorfadeIn!=ID)
  205.                         {
  206.                        
  207.                         for(int i=0;i<cantidad_socios;i++)
  208.                         if(libros[i].identificadorfadeIn==ID)
  209.                         {
  210.                           cout<<"El socio de con la cedula "<<ID<<" es de nombre: "<<libros[i].nombrefadeIn<<endl;
  211.                           cout<<endl;
  212.                          
  213.                           break;
  214.                          
  215.                           }
  216.                           else
  217.                           {
  218.                               system("cls");
  219.                               cout<<"ERROR//No existe una persona con ese ID"<<endl;
  220.                               cout<<endl;
  221.                               system("pause");
  222.                               system("cls");
  223.                               cout<<"Ingrese la ID correcto:"<<endl;
  224.                               cin>>ID;
  225.                              
  226.                               }
  227.                               }
  228.                              
  229.                            break;        
  230.                        }
  231.        system("color 0f");
  232.        cout<<"******Biblioteca Publica-El Raton Feliz******"<<endl;                
  233.        cout<<"Desea realizar otra accion. s/n?"<<endl;
  234.        cin>>respuesta;
  235.        system("cls");
  236.        }
  237.        return 0;
  238.        }

Última edición por baker1562; 03/07/2011 a las 15:52
  #2 (permalink)  
Antiguo 03/07/2011, 16:33
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con un bucle infinito en un while

Deja de hacer distintos temas.. Son todos problemas referidos a la misma cosa. Trata de uqe queden todos archivados en un mismo tema.
Ya te conteste en el otro el problema.
  #3 (permalink)  
Antiguo 04/07/2011, 07:08
Avatar de afrika026  
Fecha de Ingreso: junio-2011
Mensajes: 85
Antigüedad: 12 años, 10 meses
Puntos: 19
Respuesta: Problema con un bucle infinito en un while

Te estas confundiendo con el break:

if(libros[i].identificadorfadeIn==ID)
{

cout<<"El socio de con la cedula "<<ID<<" es de nombre: "<<libros[i].nombrefadeIn<<endl;

cout<<endl;


break; //BORRA ESTE break


}

else

{

system("cls");

cout<<"ERROR//No existe una persona con ese ID"<<endl;

cout<<endl;

system("pause");

system("cls");

cout<<"Ingrese la ID correcto:"<<endl;

cin>>ID;

}
break; //AGREGA EN ESTE LUGAR EL break
}

Última edición por afrika026; 04/07/2011 a las 07:17
  #4 (permalink)  
Antiguo 04/07/2011, 12:43
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Problema con un bucle infinito en un while

mmmm si me sirvio ese break, pero el problema es que solo busca un elemento creo yo, y yo desearia que buscara en el arreglo el elemento parecido, pero igual no recuerdo como se buscaba en un arreglo o sea no recuerdo la instruccion
  #5 (permalink)  
Antiguo 04/07/2011, 13:10
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con un bucle infinito en un while

Ahi lo estas buscando al ID. Haces un for para variar i, y despues vas comparando el ID con cada uno de los regitros de la estructura con subindice i.

Para mi el while no tiene que ir.
  #6 (permalink)  
Antiguo 04/07/2011, 16:23
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Problema con un bucle infinito en un while

Lo hice asi, pero lastimosamente en las clases de c++ que llevamos en la universidad nunca nos han enseñado como buscar un elemento en un arreglo igual modifique el case 4 asi

Código C++:
Ver original
  1. case 4:
  2.                         cout<<"******Prestamo de libro******"<<endl;
  3.                         cout<<endl;
  4.                         cout<<"Ingrese la ID de la persona en cuestion:"<<endl;
  5.                         cin>>ID;
  6.                        
  7.                         if(libros[i].identificadorfadeIn==ID)
  8.                         {
  9.                           cout<<"El socio #"<<i<<" con la cedula "<<ID<<" es de nombre: "<<libros[i].nombrefadeIn<<endl;
  10.                           cout<<endl;
  11.                           }
  12.                           else
  13.                           {
  14.                               system("cls");
  15.                               cout<<"ERROR//No existe una persona con ese ID"<<endl;
  16.                               cout<<endl;
  17.                               system("pause");
  18.                               system("cls");
  19.                               }
  20.                               break;

aunque despues del ID no se como realizar la comparacion entre ID y el arreglo para ver en que posicion coincide, y como les digo no nos enseñaron eso. Por eso ya llevo 2 dias con los mismo
  #7 (permalink)  
Antiguo 05/07/2011, 09:55
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con un bucle infinito en un while

Conoces las dos herramientas para hacer una busqueda.
Una es el "for". con eso iterass un variable entre 0 y el indice maximo.
Y conoce como leer un elemento en particular de un arreglo. En tu caso "libros[i].identificadorfadeIn".
Solo debes combinar estos dos para que lees todo los elementos. Y con un simple if vas comparando.

PD: Me parece muy curioso lo que decis que no te enseñanron. Porque en el primer codigo si hechas las busquedas. Era en otro punto donde fallaba. Y de golpe borras todo y decis que no te enseñaron.
  #8 (permalink)  
Antiguo 05/07/2011, 10:12
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Problema con un bucle infinito en un while

Cita:
Iniciado por sam90 Ver Mensaje
Conoces las dos herramientas para hacer una busqueda.
Una es el "for". con eso iterass un variable entre 0 y el indice maximo.
Y conoce como leer un elemento en particular de un arreglo. En tu caso "libros[i].identificadorfadeIn".
Solo debes combinar estos dos para que lees todo los elementos. Y con un simple if vas comparando.

PD: Me parece muy curioso lo que decis que no te enseñanron. Porque en el primer codigo si hechas las busquedas. Era en otro punto donde fallaba. Y de golpe borras todo y decis que no te enseñaron.
si ya lo intentado y no me sale, despues del ingreso del ID, meto las siguientes lineas

for(int i=0;i<cantidad_socios;i++)
libros[i].identificadorfadeIn=ID;

y despues viene el if, pero igual no me logra buscar nada, eso fue lo primero que pense e hice y nada
  #9 (permalink)  
Antiguo 05/07/2011, 10:18
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con un bucle infinito en un while

Es que de la nada estas mezclando todo.
Esto es una asignacion: libros[i].identificadorfadeIn=ID;
ASi le asignas a todo el mismo ID.

Esto es una comparacion: libros[i].identificadorfadeIn==ID;
Que deberia ir dentro del if para uqe tenga mejor uso. Asi:

for(int i=0;i<cantidad_socios;i++)
if (libros[i].identificadorfadeIn==ID){
//codigo a ejecutar cuando el ID concide. Libros con indice i.
}

En ese caso no es util usar el else de la comparacion porque por cada libro incorrecto va a dar un aviso de que no coiciden. Por eso esta bueno tener un variable que marque si lo encontraste o no. Asi, cuadno termina te fijas si lo encontraste o no. Entonces mostras el mensaje no encontrado correctamente,
  #10 (permalink)  
Antiguo 05/07/2011, 10:45
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Problema con un bucle infinito en un while

sam perdon por tanta molestia con este tema, una ultima cosa, hago el for y el if, y me busca el socio que ingrese, hasta ahi bien, pero despues meto otro socio con ID 234 y no me lo encuentra solo me encuentra el primer socio que ingrese, algo paso con el i o con cantidad_socios, alguno de los 2 no sube o algo pasa??
  #11 (permalink)  
Antiguo 05/07/2011, 10:53
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con un bucle infinito en un while

posiblemente sea contidad_socios?? mostrame el codigo.
  #12 (permalink)  
Antiguo 05/07/2011, 11:08
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Problema con un bucle infinito en un while

Aqui, mira como se comporta el case 4

Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6.  typedef struct{
  7.     int ISBN;
  8.     char nombre_libro[100];
  9.     char editorialfadeIn[100];
  10.     int numero_edicionfadeIn;
  11.     char autorfadeIn[100];
  12.     int identificadorfadeIn;
  13.     char nombrefadeIn[100];
  14.     char apellidosfadeIn[100];
  15.     int fecha_registrofadeIn;
  16.     int estadofadeIn;
  17.  } datos_libros;
  18.  
  19.  
  20.  int buscar(datos_libros vector[],int longitud, int valor){
  21.  
  22.    for(int i=0;i<longitud;i++){
  23.       if (vector[i].ISBN == valor)
  24.           return i;
  25.    }
  26.    return -1;
  27.  }
  28.  
  29.  
  30. int main ()
  31. {
  32.    
  33.     datos_libros libros[4];
  34.     int opcion;
  35.     int i = 0;
  36.     int j = 0;
  37.     int ISBN=0;
  38.     int socio;
  39.     int k;
  40.     int ID;
  41.     int cantidad_libros;
  42.     int cantidad_socios;
  43.     string respuesta;
  44.    
  45.    
  46.     while(respuesta!="N" && respuesta!="n")
  47.     {
  48.        system("color 0f");
  49.        cout<<"******Biblioteca Publica^El Raton Feliz^******"<<endl;
  50.        cout<<endl;
  51.        cout<<"Digite #1, para ingresar nuevo socio."<<endl;
  52.        cout<<"Digite #2, para cambiar estado del socio."<<endl;
  53.        cout<<"Digite #3, para ingresar nuevo libro."<<endl;
  54.        cout<<"Digite #4, para prestar libro."<<endl;
  55.        cout<<"Digite #5, pàra recibir libro."<<endl;
  56.        cout<<"Digite #6, para desplegar lista de libros."<<endl;
  57.        cout<<"Digite #7, para desplegar lista de socios."<<endl;
  58.        cout<<"Digite #8, para desplegar lista de libros prestados actualmente"<<endl;
  59.        cout<<endl;
  60.        cout<<"Que opcion desea realizar?"<<endl;
  61.        cin>>opcion;
  62.        system("cls");
  63.        
  64.        
  65.         switch(opcion){
  66.              
  67.          case 1:
  68.               if(i<4)
  69.               {
  70.               cout<<"******Ingreso de nuevo socio******"<<endl;
  71.               cout<<endl;
  72.               cout<<"Ingrese nombre del socio # "<<i<<":"<<endl;
  73.               cin>>libros[i].nombrefadeIn;
  74.               cout<<endl;
  75.               cout<<"Ingrese apellidos del socio:"<<endl;
  76.               cin>>libros[i].apellidosfadeIn;
  77.               cout<<endl;
  78.               cout<<"Ingrese cedula:"<<endl;
  79.               cin>>libros[i].identificadorfadeIn;
  80.               cout<<endl;
  81.               cout<<"Ingrese fecha de registro:(formato dd/mm/aaaa)"<<endl;
  82.               cin>>libros[i].fecha_registrofadeIn;
  83.               cout<<endl;
  84.               cout<<"Ingrese #1 para usuario activo o ingreso #2 para usuario inactivo:"<<endl;
  85.               cin>>libros[i].estadofadeIn;
  86.               cout<<endl;
  87.               system("cls");
  88.               if(libros[i].estadofadeIn==1)
  89.               {
  90.                 system("color 0e");
  91.                 cout<<"El socio de nombre "<<libros[i].nombrefadeIn<<" esta activo!!!"<<endl;
  92.                 system("pause");
  93.                 system("cls");
  94.                 }
  95.                 else
  96.                 {
  97.                     system("color 0e");
  98.                     cout<<"El socio de nombre "<<libros[i].nombrefadeIn<<" esta inactivo!!!"<<endl;
  99.                     system("pause");
  100.                     system("cls");
  101.                     }
  102.                     cout<<endl;
  103.               i=i+1;
  104.               cantidad_socios=i;
  105.               }
  106.               else
  107.               {  
  108.                   system("color 4e");
  109.                   cout<<"ERROR/No se pueden ingresar mas datos/Memoria de socios llena"<<endl;
  110.               system("pause");
  111.                }
  112.                break;
  113.                
  114.                case 2:
  115.                     cout<<"*******Cambio de estado de los socios******"<<endl;
  116.                     cout<<endl;
  117.                     cout<<"Ingrese numero de socio(valido de 0 a 3)"<<endl;
  118.                     cin>>socio;
  119.                     cout<<endl;
  120.                     k=socio;
  121.                     if(k>3)
  122.                     {
  123.                            system("cls");
  124.                            system("color 0b");
  125.                            cout<<"ERROR//Numero de socio inexistente//Ingrese un numero de socio valido!!!"<<endl;
  126.                            cout<<endl;
  127.                            system("pause");
  128.                            system("cls");
  129.                            
  130.                            break;
  131.                            }
  132.                     if(libros[k].estadofadeIn==1)
  133.                     {
  134.                        cout<<"El socio #"<<k<<" de nombre: "<<libros[k].nombrefadeIn<<" se encuentra activo"<<endl;
  135.                        cout<<endl;
  136.                        cout<<"Para cambia el estado del socio a inactivo, presione #2!!"<<endl;
  137.                        cin>>libros[k].estadofadeIn;
  138.                        cout<<endl;
  139.                        cout<<"Cambio de estado del socio a inactivo, fue hecho satisfactoriamente!!"<<endl;
  140.                        system("pause");
  141.                        system("cls");
  142.                        }
  143.                        else
  144.                        {
  145.                            cout<<"El socio #"<<k<<" de nombre: "<<libros[k].nombrefadeIn<<" se encuentra inactivo"<<endl;
  146.                            cout<<endl;
  147.                            cout<<"Para cambiar el estado del socio a activo, presione#1!!"<<endl;
  148.                            cin>>libros[k].estadofadeIn;
  149.                            cout<<endl;
  150.                            cout<<"Cambio de socio a activo, fue hecho satisfactoriamente!!"<<endl;
  151.                            system("pause");
  152.                            system("cls");
  153.                            }
  154.                            cout<<endl;
  155.                            
  156.                            
  157.                            
  158.                     break;
  159.                    
  160.            case 3:
  161.  
  162.                if(j<4)
  163.                        {
  164.                        cout<<"******Ingreso de Nuevo Libro******"<<endl;
  165.                        cout<<endl;
  166.                        cout<<"Ingrese el nombre del libro nuevo # "<<j<<":"<<endl;
  167.                        cin>>libros[j].nombre_libro;
  168.                        cout<<endl;
  169.                        cout<<"Ingrese numero de edicion:"<<endl;
  170.                        cin>>libros[j].numero_edicionfadeIn;
  171.                        cout<<endl;
  172.                        cout<<"Ingrese editorial:"<<endl;
  173.                        cin>>libros[j].editorialfadeIn;
  174.                        cout<<endl;
  175.                        cout<<"Ingrese el ISBN del libro:"<<endl;
  176.                        cin>>ISBN;
  177.                        cout<<endl;
  178.                        while (buscar(libros,j,ISBN)!=-1){
  179.                          cout << "ERROR//Ya has introducido un libro con ese ISBN" << endl;  
  180.                          cout<<endl;        
  181.                          cout<<"Ingrese el ISBN correcto del libro:"<<endl;
  182.                          cin>>ISBN;
  183.                          system("cls");
  184.                        }        
  185.                        
  186.                        libros[j].ISBN = ISBN;
  187.                        j=j+1;
  188.                        cantidad_libros=j;
  189.                        }
  190.                        else
  191.                        {   system("color 0c");
  192.                            cout<<"ERROR//Memoria de libros llena"<<endl;
  193.                            system("pause");
  194.                            }
  195.                            break;
  196.                            
  197.                    case 4:
  198.                         cout<<"******Prestamo de libro******"<<endl;
  199.                         cout<<endl;
  200.                        
  201.                        cout<<"Ingrese la ID de la persona en cuestion:"<<endl;
  202.                        cin>>ID;
  203.                        
  204.                         for(int i=0;i<cantidad_socios;i++)
  205.                         if(libros[i].identificadorfadeIn==ID)
  206.                         {
  207.                           cout<<"El socio de con la cedula "<<ID<<" es de nombre: "<<libros[i].nombrefadeIn<<endl;
  208.                           cout<<endl;
  209.                          
  210.                           break;
  211.                          
  212.                           }
  213.                           else
  214.                           {
  215.                               system("cls");
  216.                               cout<<"ERROR//No existe una persona con ese ID"<<endl;
  217.                               cout<<endl;
  218.                               system("pause");
  219.                               system("cls");
  220.                               cout<<"Ingrese la ID correcto:"<<endl;
  221.                               cin>>ID;
  222.                              
  223.      
  224.                               }
  225.                              
  226.                            break;        
  227.                  
  228.        system("color 0f");
  229.        cout<<"******Biblioteca Publica-El Raton Feliz******"<<endl;                
  230.        cout<<"Desea realizar otra accion. s/n?"<<endl;
  231.        cin>>respuesta;
  232.        system("cls");
  233.        }
  234.        return 0;
  235.        }
  #13 (permalink)  
Antiguo 05/07/2011, 13:14
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Problema con un bucle infinito en un while

Mira como se comporta ahora.
Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6.  typedef struct{
  7.     int ISBN;
  8.     char nombre_libro[100];
  9.     char editorialfadeIn[100];
  10.     int numero_edicionfadeIn;
  11.     char autorfadeIn[100];
  12.     int identificadorfadeIn;
  13.     char nombrefadeIn[100];
  14.     char apellidosfadeIn[100];
  15.     int fecha_registrofadeIn;
  16.     int estadofadeIn;
  17.  } datos_libros;
  18.  
  19.  
  20.  int buscar(datos_libros vector[],int longitud, int valor){
  21.  
  22.    for(int i=0;i<longitud;i++){
  23.       if (vector[i].ISBN == valor)
  24.           return i;
  25.    }
  26.    return -1;
  27.  }
  28.  
  29.  
  30. int main ()
  31. {
  32.    
  33.     datos_libros libros[4];
  34.     int opcion;
  35.     int i = 0,c;
  36.     int j = 0;
  37.     int ISBN=0;
  38.     int socio;
  39.     int k,encontrado;
  40.     int ID;
  41.     int cantidad_libros;
  42.     int cantidad_socios = 0;
  43.     string respuesta;
  44.    
  45.    
  46.     while(respuesta!="N" && respuesta!="n")
  47.     {
  48.        //system("color 0f");
  49.        cout<<"******Biblioteca Publica^El Raton Feliz^******"<<endl;
  50.        cout<<endl;
  51.        cout<<"Digite #1, para ingresar nuevo socio."<<endl;
  52.        cout<<"Digite #2, para cambiar estado del socio."<<endl;
  53.        cout<<"Digite #3, para ingresar nuevo libro."<<endl;
  54.        cout<<"Digite #4, para prestar libro."<<endl;
  55.        cout<<"Digite #5, pàra recibir libro."<<endl;
  56.        cout<<"Digite #6, para desplegar lista de libros."<<endl;
  57.        cout<<"Digite #7, para desplegar lista de socios."<<endl;
  58.        cout<<"Digite #8, para desplegar lista de libros prestados actualmente"<<endl;
  59.        cout<<endl;
  60.        cout<<"Que opcion desea realizar?"<<endl;
  61.        cin>>opcion;
  62.        //system("cls");
  63.        
  64.        
  65.         switch(opcion){
  66.              
  67.          case 1:
  68.               if(i<4)
  69.               {
  70.               cout<<"******Ingreso de nuevo socio******"<<endl;
  71.               cout<<endl;
  72.               cout<<"Ingrese nombre del socio # "<<i<<":"<<endl;
  73.               cin>>libros[i].nombrefadeIn;
  74.               cout<<endl;
  75.               cout<<"Ingrese apellidos del socio:"<<endl;
  76.               cin>>libros[i].apellidosfadeIn;
  77.               cout<<endl;
  78.               cout<<"Ingrese cedula:"<<endl;
  79.               cin>>libros[i].identificadorfadeIn;
  80.               cout<<endl;
  81.               cout<<"Ingrese fecha de registro:(formato dd/mm/aaaa)"<<endl;
  82.               cin>>libros[i].fecha_registrofadeIn;
  83.               cout<<endl;
  84.               cout<<"Ingrese #1 para usuario activo o ingreso #2 para usuario inactivo:"<<endl;
  85.               cin>>libros[i].estadofadeIn;
  86.               cout<<endl;
  87.               //system("cls");
  88.               if(libros[i].estadofadeIn==1)
  89.               {
  90.                 //system("color 0e");
  91.                 cout<<"El socio de nombre "<<libros[i].nombrefadeIn<<" esta activo!!!"<<endl;
  92.                 //system("pause");
  93.                 //system("cls");
  94.                 }
  95.                 else
  96.                 {
  97.                     //system("color 0e");
  98.                     cout<<"El socio de nombre "<<libros[i].nombrefadeIn<<" esta inactivo!!!"<<endl;
  99.                     //system("pause");
  100.                     //system("cls");
  101.                     }
  102.                     cout<<endl;
  103.               i=i+1;
  104.               cantidad_socios++;
  105.               }
  106.               else
  107.               {  
  108.                   //system("color 4e");
  109.                   cout<<"ERROR/No se pueden ingresar mas datos/Memoria de socios llena"<<endl;
  110.               //system("pause");
  111.                }
  112.                break;
  113.                
  114.                case 2:
  115.                     cout<<"*******Cambio de estado de los socios******"<<endl;
  116.                     cout<<endl;
  117.                     cout<<"Ingrese numero de socio(valido de 0 a 3)"<<endl;
  118.                     cin>>socio;
  119.                     cout<<endl;
  120.                     k=socio;
  121.                     if(k>3)
  122.                     {
  123.                            //system("cls");
  124.                            //system("color 0b");
  125.                            cout<<"ERROR//Numero de socio inexistente//Ingrese un numero de socio valido!!!"<<endl;
  126.                            cout<<endl;
  127.                            //system("pause");
  128.                            //system("cls");
  129.                            
  130.                            break;
  131.                            }
  132.                     if(libros[k].estadofadeIn==1)
  133.                     {
  134.                        cout<<"El socio #"<<k<<" de nombre: "<<libros[k].nombrefadeIn<<" se encuentra activo"<<endl;
  135.                        cout<<endl;
  136.                        cout<<"Para cambia el estado del socio a inactivo, presione #2!!"<<endl;
  137.                        cin>>libros[k].estadofadeIn;
  138.                        cout<<endl;
  139.                        cout<<"Cambio de estado del socio a inactivo, fue hecho satisfactoriamente!!"<<endl;
  140.                        //system("pause");
  141.                        //system("cls");
  142.                        }
  143.                        else
  144.                        {
  145.                            cout<<"El socio #"<<k<<" de nombre: "<<libros[k].nombrefadeIn<<" se encuentra inactivo"<<endl;
  146.                            cout<<endl;
  147.                            cout<<"Para cambiar el estado del socio a activo, presione#1!!"<<endl;
  148.                            cin>>libros[k].estadofadeIn;
  149.                            cout<<endl;
  150.                            cout<<"Cambio de socio a activo, fue hecho satisfactoriamente!!"<<endl;
  151.                            //system("pause");
  152.                            //system("cls");
  153.                            }
  154.                            cout<<endl;
  155.                            
  156.                            
  157.                            
  158.                     break;
  159.                    
  160.            case 3:
  161.  
  162.                if(j<4)
  163.                        {
  164.                        cout<<"******Ingreso de Nuevo Libro******"<<endl;
  165.                        cout<<endl;
  166.                        cout<<"Ingrese el nombre del libro nuevo # "<<j<<":"<<endl;
  167.                        cin>>libros[j].nombre_libro;
  168.                        cout<<endl;
  169.                        cout<<"Ingrese numero de edicion:"<<endl;
  170.                        cin>>libros[j].numero_edicionfadeIn;
  171.                        cout<<endl;
  172.                        cout<<"Ingrese editorial:"<<endl;
  173.                        cin>>libros[j].editorialfadeIn;
  174.                        cout<<endl;
  175.                        cout<<"Ingrese el ISBN del libro:"<<endl;
  176.                        cin>>ISBN;
  177.                        cout<<endl;
  178.                        while (buscar(libros,j,ISBN)!=-1){
  179.                          cout << "ERROR//Ya has introducido un libro con ese ISBN" << endl;  
  180.                          cout<<endl;        
  181.                          cout<<"Ingrese el ISBN correcto del libro:"<<endl;
  182.                          cin>>ISBN;
  183.                          //system("cls");
  184.                        }        
  185.                        
  186.                        libros[j].ISBN = ISBN;
  187.                        j=j+1;
  188.                        cantidad_libros=j;
  189.                        }
  190.                        else
  191.                        {   //system("color 0c");
  192.                            cout<<"ERROR//Memoria de libros llena"<<endl;
  193.                            //system("pause");
  194.                            }
  195.                            break;
  196.                            
  197.                    case 4:
  198.                         cout<<"******Prestamo de libro******"<<endl;
  199.                         cout<<endl;
  200.                        
  201.                        cout<<"Ingrese la ID de la persona en cuestion:"<<endl;
  202.                        cin>>ID;
  203.                        encontrado = 0;
  204.                         for(c=0;c<cantidad_socios;c++)
  205.                         if(libros[c].identificadorfadeIn==ID)  {
  206.                           cout<<"El socio de con la cedula "<<ID<<" es de nombre: "<<libros[c].nombrefadeIn<<endl;
  207.                           cout<<endl;
  208.                           encontrado = 1;
  209.                           break;
  210.                          }
  211.                          if (encontrado == 0) cout << "Socio no encontrado" << endl;
  212.                          break;        
  213.                  
  214.        //system("color 0f");
  215.        cout<<"******Biblioteca Publica-El Raton Feliz******"<<endl;                
  216.        cout<<"Desea realizar otra accion. s/n?"<<endl;
  217.        cin>>respuesta;
  218.        //system("cls");
  219.        }}
  220.        return 0;
  221.        }
  #14 (permalink)  
Antiguo 05/07/2011, 13:41
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Problema con un bucle infinito en un while

uuuff gracias por la ayuda, ahora si puedo avanzar !!!

Etiquetas: bucle, errores, infinito, whiles
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 17:09.