[ Foro de C ]

Registros y módulos

16-Dec-2015 01:39
Invitado (Señor K)
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.)