Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/07/2011, 11:52
Avatar de baker1562
baker1562
 
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 9 meses
Puntos: 9
Respuesta: Buscar dato en arreglo

Cita:
Iniciado por alexg88 Ver Mensaje
Yo lo haría mediante una función para modularizar más las cosas.

Si te fijas, la función buscar devuelve el índice del array donde se encuentre un elemento y si esté no se encuentra, devuelve -1.

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.           if(opcion==1)
  63.             {
  64.               if(i<4)
  65.               {
  66.               cout<<"******Ingreso de nuevo socio******"<<endl;
  67.               cout<<endl;
  68.               cout<<"Ingrese nombre del socio # "<<i<<":"<<endl;
  69.               cin>>libros[i].nombrefadeIn;
  70.               cout<<"Ingrese apellidos del socio:"<<endl;
  71.               cin>>libros[i].apellidosfadeIn;
  72.               cout<<"Ingrese cedula:"<<endl;
  73.               cin>>libros[i].identificadorfadeIn;
  74.               cout<<"Ingrese fecha de registro:(formato dd/mm/aaaa)"<<endl;
  75.               cin>>libros[i].fecha_registrofadeIn;
  76.               i=i+1;
  77.               }
  78.               else
  79.               {
  80.                   cout<<"ERROR/No se pueden ingresar mas datos/Memoria de socios llena"<<endl;
  81.               system("pause");
  82.                }
  83.                }
  84.                else
  85.                {
  86.                    if(opcion==3)
  87.                      {
  88.                        if(j<4)
  89.                        {
  90.                        cout<<"******Ingreso de Nuevo Libro******"<<endl;
  91.                        cout<<endl;
  92.                        cout<<"Ingrese el nombre del libro nuevo # "<<j<<":"<<endl;
  93.                        cin>>libros[j].nombre_libro;
  94.                        cout<<"Ingrese el ISBN del libro:"<<endl;
  95.                        cin>>ISBN;
  96.                        if (buscar(libros,4,ISBN)!=-1)                    
  97.                         {
  98.                             cout << "Ya has introducido un libro con ese ISBN" << endl;
  99.                             continue;
  100.                        }
  101.                        libros[i].ISBN = ISBN;
  102.                        j=j+1;
  103.                        }
  104.                        else
  105.                        {
  106.                            cout<<"ERROR//Memoria de libros llena"<<endl;
  107.                            }
  108.                            }
  109.                            else
  110.                            {
  111.                          if(opcion==6)
  112.                          {
  113.                             cout<<"Nombre del Libro"<<setw(20)<<"ISBN"<<endl;
  114.                             z=j;
  115.                             for(int j=0;j<z;j++)
  116.                             cout<<libros[j].nombre_libro<<setw(16)<<libros[j].ISBN<<endl;
  117.                             }
  118.                             else
  119.                             {
  120.                          if(opcion==7)
  121.                          {
  122.                               cout<<"Socios"<<setw(20)<<"Cedula"<<endl;
  123.                               y=i;
  124.                               for(int i=0;i<y;i++)
  125.                               cout<<libros[i].nombrefadeIn<<setw(8)<<libros[i].apellidosfadeIn<<setw(13)<<libros[i].identificadorfadeIn<<endl;
  126.                               }
  127.                               }
  128.                               }
  129.                               }
  130.        cout<<"Desea realizar otra accion. s/n?"<<endl;
  131.        cin>>respuesta;
  132.        system("cls");
  133.        }
  134.        return 0;
  135.        }

El ISBN es un arreglo

cin>>ISBN;

esta linea no lo guarda en un sola posicion o la esta guardando en cada posicion del arreglo, es que hago esto, y a la hora del muestreo de libros, los libros me salen desordenados