Ver Mensaje Individual
  #8 (permalink)  
Antiguo 01/07/2011, 12:16
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Buscar dato en arreglo

Yo he probado lo que tu dices y si funciona, no muestra dos libros, sólo el primero.

En cualquier caso si quieres obligar al usuario a meter de nuevo el ISBN solo hace falta otro bucle.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4.  
  5. using namespace std;
  6.  
  7.  typedef struct{
  8.     int ISBN;
  9.     char nombre_libro[100];
  10.     char editorialfadeIn[100];
  11.     int numero_edicionfadeIn;
  12.     char autorfadeIn[100];
  13.     int identificadorfadeIn;
  14.     char nombrefadeIn[100];
  15.     char apellidosfadeIn[100];
  16.     int fecha_registrofadeIn;
  17.     int estadofadeIn;
  18.  } datos_libros;
  19.  
  20.  
  21.  
  22. int buscar(datos_libros vector[],int longitud, int valor){
  23.  
  24.    for(int i=0;i<longitud;i++){
  25.       if (vector[i].ISBN == valor)
  26.           return i;
  27.    }
  28.    return -1;
  29.  }
  30.  
  31.  
  32. int main ()
  33. {
  34.    
  35.     datos_libros libros[4];
  36.     int opcion;
  37.     int i = 0;
  38.     int j = 0;
  39.     int z;
  40.     int y;
  41.     string respuesta;
  42.     int ISBN = 0;
  43.    
  44.    
  45.     while( respuesta.compare("N")!=0 && respuesta.compare("n")!=0)
  46.     {
  47.        cout<<"******Biblioteca Publica^El Raton Feliz^******"<<endl;
  48.        cout<<endl;
  49.        cout<<"Digite #1, para ingresar nuevo socio."<<endl;
  50.        cout<<"Digite #2, para cambiar estado del socio."<<endl;
  51.        cout<<"Digite #3, para ingresar nuevo libro."<<endl;
  52.        cout<<"Digite #4, para prestar libro."<<endl;
  53.        cout<<"Digite #5, pàra recibir libro."<<endl;
  54.        cout<<"Digite #6, para desplegar lista de libros."<<endl;
  55.        cout<<"Digite #7, para desplegar lista de socios."<<endl;
  56.        cout<<"Digite #8, para desplegar lista de libros prestados actualmente"<<endl;
  57.        cout<<endl;
  58.        cout<<"Que opcion desea realizar?"<<endl;
  59.        cin>>opcion;
  60.        system("cls");
  61.        
  62.         switch(opcion){
  63.              
  64.          case 1:
  65.               if(i<4)
  66.               {
  67.               cout<<"******Ingreso de nuevo socio******"<<endl;
  68.               cout<<endl;
  69.               cout<<"Ingrese nombre del socio # "<<i<<":"<<endl;
  70.               cin>>libros[i].nombrefadeIn;
  71.               cout<<"Ingrese apellidos del socio:"<<endl;
  72.               cin>>libros[i].apellidosfadeIn;
  73.               cout<<"Ingrese cedula:"<<endl;
  74.               cin>>libros[i].identificadorfadeIn;
  75.               cout<<"Ingrese fecha de registro:(formato dd/mm/aaaa)"<<endl;
  76.               cin>>libros[i].fecha_registrofadeIn;
  77.               i=i+1;
  78.               }
  79.               else
  80.               {
  81.                   cout<<"ERROR/No se pueden ingresar mas datos/Memoria de socios llena"<<endl;
  82.               system("pause");
  83.                }              
  84.              break;
  85.            case 3:
  86.               if(j<4)
  87.                        {
  88.                        cout<<"******Ingreso de Nuevo Libro******"<<endl;
  89.                        cout<<endl;
  90.                        cout<<"Ingrese el nombre del libro nuevo # "<<j<<":"<<endl;
  91.                        cin>>libros[j].nombre_libro;
  92.                        cout<<"Ingrese el ISBN del libro:"<<endl;
  93.                        cin>>ISBN;
  94.                         while (buscar(libros,j,ISBN)!=-1){
  95.                          cout << "Ya has introducido un libro con ese ISBN" << endl;           
  96.                          cout<<"Ingrese el ISBN del libro:"<<endl;
  97.                          cin>>ISBN;
  98.                        }       
  99.                        
  100.                        libros[j].ISBN = ISBN;
  101.                        j=j+1;
  102.                        }
  103.                        else
  104.                        {
  105.                            cout<<"ERROR//Memoria de libros llena"<<endl;
  106.                            }
  107.                            break;
  108.                          
  109.            case 6:
  110.                          
  111.                             cout<<"Nombre del Libro"<<setw(20)<<"ISBN"<<endl;
  112.                             z=j;
  113.                             for(int j=0;j<z;j++)
  114.                             cout<<libros[j].nombre_libro<<setw(16)<<libros[j].ISBN<<endl;
  115.                             break;
  116.                            
  117.            case 7:
  118.                        
  119.                               cout<<"Socios"<<setw(20)<<"Cedula"<<endl;
  120.                               y=i;
  121.                               for(int i=0;i<y;i++)
  122.                               cout<<libros[i].nombrefadeIn<<setw(8)<<libros[i].apellidosfadeIn<<setw(13)<<libros[i].identificadorfadeIn<<endl;
  123.               }
  124.        }
  125.                              
  126.                              
  127.        cout<<"Desea realizar otra accion. s/n?"<<endl;
  128.        cin>>respuesta;
  129.        system("cls");
  130.         return 0;
  131.        }

Fíjate que he cambiado los if anidados por switch que es muy útil en este caso.