SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Kajjin en Martes 13 de Marzo de 2007, 16:19

Título: Cadenas De Caracteres En Estructuras
Publicado por: Kajjin en Martes 13 de Marzo de 2007, 16:19
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.  
Título: Re: Cadenas De Caracteres En Estructuras
Publicado por: Eternal Idol en Martes 13 de Marzo de 2007, 16:29
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.
Título: Re: Cadenas De Caracteres En Estructuras
Publicado por: Kajjin en Martes 13 de Marzo de 2007, 16:36
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!!!
Título: Re: Cadenas De Caracteres En Estructuras
Publicado por: Eternal Idol en Martes 13 de Marzo de 2007, 16:49
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.
Título: Re: Cadenas De Caracteres En Estructuras
Publicado por: Kajjin en Martes 13 de Marzo de 2007, 16:54
Tienes razón... en lugar de la i deberia estar la z. Muchísimas gracias por todo!!!
Título: Re: Cadenas De Caracteres En Estructuras
Publicado por: Eternal Idol en Martes 13 de Marzo de 2007, 17:02
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 ...