[ Foro de C ]
¿Por qué cuando en el menú le doy a 2, no muestra los datos introducidos?
const int TAM_MATRICULA = 100;
const int TAM_MARCA = 100;
const int TAM_PROPIETARIO = 20;
const int MAX_PRECIO =1000;
const int MAX_COCHE = 1000;
typedef struct {
char matricula[TAM_MATRICULA];
char marca[TAM_MARCA];
char propietario[TAM_PROPIETARIO];
int precio;
}TCoche;
int menu(){
int opcion;
cout << "Gestion de vehiculos" << endl;
cout << "1.Introducir info" << endl;
cout << "2.Mostrar toda la info" << endl;
cout << "3.Mostrar datos relativos a los vehiculos cuyo precio sea superior al precio medio" << endl;
cout << "4.Salir" << endl;
do{
cout << "Elige opcion";
cin >> opcion;
cin.get();
} while ( opcion<1 || opcion > 4);
return opcion;
}
TCoche alta_coche() {
TCoche nuevo;
cout << "Matricula: ";
cin.getline( nuevo.matricula, TAM_MATRICULA);
cout << "Marca: ";
cin.getline( nuevo.marca, TAM_MARCA);
cout << "Propietario: ";
cin.getline( nuevo.propietario, TAM_PROPIETARIO);
cout << "Precio: ";
cin >> nuevo.precio;
}
void listar_coches(TCoche Cochera[], int num){
int i;
cout << "---------------------------"<< endl;
for(i=0;i<=num;i++){
cout << Cochera[i].matricula << endl;
cout << Cochera[i].marca << endl;
}
cout << "---------------------------"<< endl;
}
main(){
TCoche Cochera[MAX_COCHE];
int num_coche = 0;
int elegida;
do{
elegida = menu();
switch(elegida){
case 1: Cochera[num_coche] = alta_coche();
num_coche++;
break;
case 2: listar_coches(Cochera,num_coche);
break;
}
} while(elegida!=4);
}
En esta línea:
case 1: Cochera[num_coche] = alta_coche();
Asignas al array los datos que te devuelva la función alta_coche(). El problema que tienes es que desde la función alta_coche() no devuelves ningún valor. Antes de volver de esa función, añade la línea:
return nuevo;
... y debería de funcionar sin problemas.
Saludos.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)