[ Foro de C ]

Registros y módulos

16-Dec-2015 01:39
Invitado ()
1 Respuestas

¿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);
 
 
}
 


 


16-Dec-2015 14:14
Invitado (Caranim)

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.)