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

while y arreglo en c++!!!

Estas en el tema de while y arreglo en c++!!! en el foro de C/C++ en Foros del Web. Hola, tengo un problema y desearia que me ayudaran si son tan amable, tengo un proyecto donde hay que hacer un programa tipo biblioteca, donde ...
  #1 (permalink)  
Antiguo 30/06/2011, 13:25
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Pregunta while y arreglo en c++!!!

Hola, tengo un problema y desearia que me ayudaran si son tan amable, tengo un proyecto donde hay que hacer un programa tipo biblioteca, donde se piden libros y esas cosas(ingreso de socios, ingresos de nuevos libros, etc), el problema como hago para inicializar el nombre en la posicion 1 de un arreglo de 4, y guardarlo en memoria, osea guardar un nombre y despues hacer otra opciones, y despues guardar otro nombre, pero que brinque del 1 al 2 y asi sucesivamente, porque lo hago y lo que me hace es sobreescribir la solo la posicion 1, se los agradeceria mucho, tambien tengo un problema con el while de que esta en el programa, no me muestra la ultima opcion!!!

Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6. int main ()
  7. {
  8.     int ISBN[4];
  9.     char nombre_libro[4];
  10.     char editorial[4];
  11.     int numero_edicion[4];
  12.     char autor[4];
  13.     int identidicador[4];
  14.     char nombre[4];
  15.     char apellidos[4];
  16.     char fecha_registro[4];
  17.     int estado[4];
  18.     int opcion;
  19.     int i;
  20.     string respuesta;
  21.    
  22.    
  23.     while(respuesta!="N" && respuesta!="n")
  24.     {
  25.        cout<<"******Biblioteca Pública^El Raton Feliz^******"<<endl;
  26.        cout<<endl;
  27.        cout<<"Digite #1, para ingresar nuevo socio."<<endl;
  28.        cout<<"Digite #2, para cambiar estado del socio."<<endl;
  29.        cout<<"Digite #3, para ingresar nuevo libro."<<endl;
  30.        cout<<"Digite #4, para prestar libro."<<endl;
  31.        cout<<"Digite #5, pàra recibir libro."<<endl;
  32.        cout<<"Digite #6, para desplegar lista de libros."<<endl;
  33.        cout<<"Digite #7, para desplegar lista de socios."<<endl;
  34.        cout<<"Digite #8, para desplegar lista de libros prestados actualmente"<<endl;
  35.        cout<<endl;
  36.        cout<<"Que opcion desea realizar?"<<endl;
  37.        cin>>opcion;
  38.        system("cls");
  39.        int i=1;
  40.           if(opcion==1)
  41.             {
  42.               cout<<"******Ingreso de nuevo socion******"<<endl;
  43.               cout<<endl;
  44.               cout<<"Ingrese nombre:"<<endl;
  45.               cin>>nombre[i];
  46.               i=i+1;
  47.               system("cls");
  48.                }
  49.          
  50.        cout<<"Desea realizar otra accion. s/n?"<<endl;
  51.        cin>>respuesta;
  52.        system("cls");
  53.        }
  54.        return 0;
  55.        }


de antemano, agradezcon su preciada ayuda!!
  #2 (permalink)  
Antiguo 30/06/2011, 13:39
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: while y arreglo en c++!!!

Lo primero que debes saber es que los array comienzan por el índice 0, así que ten cuidado.

El error te daba porque la inicializas el valor de i en cada vuelta del bucle a 1. Tendrías que hacerlo fuera.

Código C:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. using namespace std;
  5.  
  6. int main ()
  7. {
  8.     int ISBN[4];
  9.     char nombre_libro[4];
  10.     char editorial[4];
  11.     int numero_edicion[4];
  12.     char autor[4];
  13.     int identidicador[4];
  14.     char nombre[4];
  15.     char apellidos[4];
  16.     char fecha_registro[4];
  17.     int estado[4];
  18.     int opcion;
  19.     int i = 0;
  20.     string respuesta;
  21.    
  22.    
  23.     while(respuesta!="N" && respuesta!="n")
  24.     {
  25.        cout<<"******Biblioteca Pública^El Raton Feliz^******"<<endl;
  26.        cout<<endl;
  27.        cout<<"Digite #1, para ingresar nuevo socio."<<endl;
  28.        cout<<"Digite #2, para cambiar estado del socio."<<endl;
  29.        cout<<"Digite #3, para ingresar nuevo libro."<<endl;
  30.        cout<<"Digite #4, para prestar libro."<<endl;
  31.        cout<<"Digite #5, pàra recibir libro."<<endl;
  32.        cout<<"Digite #6, para desplegar lista de libros."<<endl;
  33.        cout<<"Digite #7, para desplegar lista de socios."<<endl;
  34.        cout<<"Digite #8, para desplegar lista de libros prestados actualmente"<<endl;
  35.        cout<<endl;
  36.        cout<<"Que opcion desea realizar?"<<endl;
  37.        cin>>opcion;
  38.        system("cls");
  39.        
  40.           if(opcion==1)
  41.             {
  42.               cout<<"******Ingreso de nuevo socion******"<<endl;
  43.               cout<<endl;
  44.               cout<<"Ingrese nombre:"<<endl;
  45.               cin>>nombre[i];
  46.               i=i+1;
  47.               system("cls");
  48.                }
  49.          
  50.        cout<<"Desea realizar otra accion. s/n?"<<endl;
  51.        cin>>respuesta;
  52.        system("cls");
  53.        }
  54.        return 0;
  55.        }

Otra cosa que podrías hacer es usar estructuras para no tener tantas variables.

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;
  9.     char editorialfadeIn;
  10.     int numero_edicionfadeIn;
  11.     char autorfadeIn;
  12.     int identidicadorfadeIn;
  13.     char nombrefadeIn;
  14.     char apellidosfadeIn;
  15.     char fecha_registrofadeIn;
  16.     int estadofadeIn;
  17.  } datos_libros;
  18.  
  19. int main ()
  20. {
  21.    
  22.     datos_libros[4] libros;
  23.     int opcion;
  24.     int i = 0;
  25.     string respuesta;
  26.    
  27.    
  28.     while(respuesta!="N" && respuesta!="n")
  29.     {
  30.        cout<<"******Biblioteca Pública^El Raton Feliz^******"<<endl;
  31.        cout<<endl;
  32.        cout<<"Digite #1, para ingresar nuevo socio."<<endl;
  33.        cout<<"Digite #2, para cambiar estado del socio."<<endl;
  34.        cout<<"Digite #3, para ingresar nuevo libro."<<endl;
  35.        cout<<"Digite #4, para prestar libro."<<endl;
  36.        cout<<"Digite #5, pàra recibir libro."<<endl;
  37.        cout<<"Digite #6, para desplegar lista de libros."<<endl;
  38.        cout<<"Digite #7, para desplegar lista de socios."<<endl;
  39.        cout<<"Digite #8, para desplegar lista de libros prestados actualmente"<<endl;
  40.        cout<<endl;
  41.        cout<<"Que opcion desea realizar?"<<endl;
  42.        cin>>opcion;
  43.        system("cls");
  44.        
  45.           if(opcion==1)
  46.             {
  47.               cout<<"******Ingreso de nuevo socion******"<<endl;
  48.               cout<<endl;
  49.               cout<<"Ingrese nombre:"<<endl;
  50.               cin>>libros[i].nombre;
  51.               i=i+1;
  52.               system("cls");
  53.                }
  54.          
  55.        cout<<"Desea realizar otra accion. s/n?"<<endl;
  56.        cin>>respuesta;
  57.        system("cls");
  58.        }
  59.        return 0;
  60.        }
  #3 (permalink)  
Antiguo 30/06/2011, 14:12
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: while y arreglo en c++!!!

muchas gracias, me ayudo mucho, lo unico que me sigue dando problema es lo ultimo si desea realizar otra accion, no me sale la opcion de darle S/N porque me tira de un solo al menu principal
  #4 (permalink)  
Antiguo 30/06/2011, 16:18
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: while y arreglo en c++!!!

El nombre del libro no deberia ser de un solo caracter. Deberias crear un array de caracteres:

Código C++:
Ver original
  1. typedef struct{
  2.     int ISBN;
  3.     char nombre_libro[100];
  4.     char editorialfadeIn[100];
  5.     int numero_edicionfadeIn;
  6.     char autorfadeIn[100];
  7.     int identidicadorfadeIn;
  8.     char nombrefadeIn;
  9.     char apellidosfadeIn;
  10.     char fecha_registrofadeIn;
  11.     int estadofadeIn;
  12.  } datos_libros;

Luego creeas un cierta cantidad de esta estructura:

datos_libros libros[4];

y para leer un numbre:

cin << libros[i].nombre;

Ademas ya que estas usando C++ te recomendaria empezar a usar un poco de clases y los string. Te va a solucionar muchas cosas. Es solo una sugerencia.
  #5 (permalink)  
Antiguo 30/06/2011, 16:21
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: while y arreglo en c++!!!

Pues sí, sam90 tiene toda la razón y la verdad es que no me había fijado en esos fallos.

Etiquetas: arreglos, contador, programa
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 13:03.