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!!
#include <iostream>
#include <cstring>
using namespace std;
struct DVD {
int codigo;
char titulo[257];
int agno;
};
void ordenalfabetico (DVD pelicula[], int numeropelis);
main () {
int numeropelis=0;
DVD pelicula[100];
int i=0;
cout << "Dime el numero de peliculas que quieres almacenar: ";
cin >> numeropelis;
for (i=0; i<numeropelis; i++){
cout << "Dime el codigo del DVD: ";
cin >> pelicula[i].codigo;
cout << "Dime el titulo de la pelicula: ";
cin.getline (pelicula[i].titulo, 257);
cout << "Dime el agno de la pelicula: ";
cin >> pelicula[i].agno;
}
ordenalfabetico (pelicula, numeropelis);
for (i=0; i<numeropelis; i++){
cout << "Pelicula: " << pelicula[i].titulo << " | Agno: " << pelicula[i].agno << " | Codigo: " <<
pelicula[i].codigo << endl;
}
}
void ordenalfabetico (DVD pelicula[], int numeropelis){
int i=0, j=0, z=0;
DVD aux;
for (i=0; i<(numeropelis-1); i++){
for (j=i+1; j<numeropelis; j++){
do {
if (pelicula[i].titulo[z] > pelicula[j].titulo[z]){
aux=pelicula[i];
pelicula[i]=pelicula[j];
pelicula[j]=aux;
i=257;
}
if (pelicula[i].titulo[z] == pelicula[j].titulo[z]){
z++;
}
if (pelicula[i].titulo[z] < pelicula[j].titulo[z]){
i=257;
}
} while (z<257);
}
}
}