Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/07/2011, 15:47
Avatar de baker1562
baker1562
 
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 8 meses
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