• Jueves 14 de Noviembre de 2024, 16:59

Autor Tema:  Cadenas De Caracteres En Estructuras  (Leído 1191 veces)

Kajjin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Cadenas De Caracteres En Estructuras
« en: Martes 13 de Marzo de 2007, 16:19 »
0
Hola a todos! Necesito hacer una cadena de caracteres con un struct para un programa que tengo que entregar mañana y no tengo ni idea de hacerla. El error es el siguiente:

Cuando ejecuto el programa, pido el numero de peliculas que se quiere almacenar, posteriormente deberia pedir el codigo de la pelicula, el nombre, y el año. Meto el codigo sin problemas, pero no se que pasa que no me deja introducir el titulo. Me pasa esto exactamente al ejecutarlo:

Dime el codigo del DVD: 1
Dime el titulo de la pelicula: Dime el agno de la pelicula:

Se salta pedir el titulo y directamente pasa a pedir el año... ¡Que alguien me ayude!

Aquí os dejo el codigo para que veais que es lo que tengo mal...

Saludos y gracias!!
Código: Text
  1.  
  2. #include <iostream>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. struct DVD {
  7.   int codigo;
  8.   char titulo[257];
  9.   int agno;
  10.   };
  11.  
  12. void ordenalfabetico (DVD pelicula[], int numeropelis);
  13.  
  14. main () {
  15.  
  16.   int numeropelis=0;
  17.   DVD pelicula[100];
  18.   int i=0;
  19.  
  20.   cout << "Dime el numero de peliculas que quieres almacenar: ";
  21.   cin >> numeropelis;
  22.  
  23.   for (i=0; i<numeropelis; i++){
  24.     cout << "Dime el codigo del DVD: ";
  25.     cin >> pelicula[i].codigo;
  26.     cout << "Dime el titulo de la pelicula: ";
  27.     cin.getline (pelicula[i].titulo, 257);
  28.     cout << "Dime el agno de la pelicula: ";
  29.     cin >> pelicula[i].agno;
  30.   }
  31.  
  32.   ordenalfabetico (pelicula, numeropelis);
  33.  
  34.   for (i=0; i<numeropelis; i++){
  35.   cout << "Pelicula: " << pelicula[i].titulo << " | Agno: " << pelicula[i].agno << " | Codigo: " <<
  36.   pelicula[i].codigo << endl;
  37.   }
  38.    
  39. }
  40.  
  41. void ordenalfabetico (DVD pelicula[], int numeropelis){
  42.  
  43.   int i=0, j=0, z=0;
  44.   DVD aux;
  45.  
  46.   for (i=0; i<(numeropelis-1); i++){
  47.     for (j=i+1; j<numeropelis; j++){
  48.       do {
  49.         if (pelicula[i].titulo[z] > pelicula[j].titulo[z]){
  50.           aux=pelicula[i];
  51.           pelicula[i]=pelicula[j];
  52.           pelicula[j]=aux;
  53.           i=257;
  54.         }
  55.         if (pelicula[i].titulo[z] == pelicula[j].titulo[z]){
  56.           z++;
  57.         }
  58.         if (pelicula[i].titulo[z] < pelicula[j].titulo[z]){
  59.           i=257;
  60.         }
  61.       } while (z<257);
  62.     }
  63.   }
  64. }
  65.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Cadenas De Caracteres En Estructuras
« Respuesta #1 en: Martes 13 de Marzo de 2007, 16:29 »
0
Despues de:

Código: Text
  1.  
  2. cin >> pelicula[i].codigo;
  3.  
  4.  
pone:
Código: Text
  1.  
  2. cin.ignore();
  3.  
  4.  

Asi se salta el ENTER, pero te voy avisando que ordenalfabetico esta mal y da una excepcion no controlada.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Kajjin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Cadenas De Caracteres En Estructuras
« Respuesta #2 en: Martes 13 de Marzo de 2007, 16:36 »
0
Buenas de nuevo, muchas gracias por el apunte, ahora me coge la cadena perfectamente, pero no encuentro el error en ordenalfabetico... ¿podrias decirme donde está? es que ni termina de ejecutar el programa vaya...

Saludos y gracias de nuevo!!!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Cadenas De Caracteres En Estructuras
« Respuesta #3 en: Martes 13 de Marzo de 2007, 16:49 »
0
Cita de: "Kajjin"
Buenas de nuevo, muchas gracias por el apunte, ahora me coge la cadena perfectamente, pero no encuentro el error en ordenalfabetico... ¿podrias decirme donde está? es que ni termina de ejecutar el programa vaya...
El problema en TU codigo esta en que le asignas a i el valor 257 y solo tenes 100 entradas en pelicula ...

Igual desde el vamos hay un error y es que no se pueden comparar alfabeticamente cadenas como lo queres hacer sino que tenes que usar strcmp por ejemplo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Kajjin

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Cadenas De Caracteres En Estructuras
« Respuesta #4 en: Martes 13 de Marzo de 2007, 16:54 »
0
Tienes razón... en lugar de la i deberia estar la z. Muchísimas gracias por todo!!!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Cadenas De Caracteres En Estructuras
« Respuesta #5 en: Martes 13 de Marzo de 2007, 17:02 »
0
Cita de: "Kajjin"
Tienes razón... en lugar de la i deberia estar la z. Muchísimas gracias por todo!!!
De nada, supongo que estaras comprobando caracter por caracter a mano ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.