Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Black cracker en 15 Agosto 2015, 23:20 PM

Título: Problema con estructuras..
Publicado por: Black cracker en 15 Agosto 2015, 23:20 PM
Hola gente, que tal? Me preguntaba si me podrían ayudar con un simple problemita. La cuestión es que estoy haciendo un programa donde necesito capturar los datos de un vehículo junto con los del chófer. Donde una estructura sea el vehículo en si y luego que cada vehículo contenga una estructura con el nombre, carne y id del chófer, pero se me ha ocurrido hacer una estructura que contenga otra que sea la del chófer pero al parecer no me funciona.

struct conductor{
char nombre;
int cedula;
int carne;
};

typedef struct vehiculo{
int placa;
char localidad[10];
int capacidad;
conductor chofer;
bool activo;
};

void agregar(vehiculo inventario[], int &cont){
cout << "Digite la placa del vehiculo ";
cin >> inventario[cont].placa;
cout << "Digite la localiacion general del vehiculo ";
cin >> inventario[cont].localidad;
cout << "Digite la capacidad del vehiculo: ";
cin >> inventario[cont].capacidad;
cout << "Digite el nombre del chofer: ";
cin >> inventario[cont].chofer.nombre;
cout << "Digite la cedula del chofer: ";
cin >> inventario[cont].chofer.cedula;
cout << "Digite el carne del chofer: ";
cin >> inventario[cont].chofer.carne;
inventario[cont].activo = true;
}
void main(){

vehiculo inventario[100];
int cont = 0;
agregar(inventario, cont);


¡GRACIAS!
Título: Re: Problema con estructuras..
Publicado por: ivancea96 en 16 Agosto 2015, 00:56 AM
En C++ no necesitas poner "typedef struct".

¿Qué error te marca?
Título: Re: Problema con estructuras..
Publicado por: Black cracker en 16 Agosto 2015, 01:13 AM
No me marca error, sino que como que se salta los "cin" del la segunda estructura...

Digite la placa del vehiculo 123456
Digite la localiacion general del vehiculo Mexico
Digite la capacidad del vehiculo: 7
Digite el nombre del chofer: Andres
Digite la cedula del chofer: Digite el carne del chofer: Presione una tecla para continuar . . .
Título: Re: Problema con estructuras..
Publicado por: ivancea96 en 16 Agosto 2015, 01:43 AM
Código (cpp) [Seleccionar]
char nombre;

El nombre de chofer es un char, no un char* ni un char[]. Tendrás que ponerlo como pusiste localidad, "char nombre[20]" por ejemplo.

El problema es que cin lee 1 caracter de "Andres", así que se queda en el buffer "ndres". Luego, al pedir un int, como "ndres" no es un número, da error.

Por cierto, en C++, en vez de "char localidad[10]", puedes y deberías poner "string localidad". Lo mismo con "string nombre".


Si quieres evitarte errores con el cin, puedes leer linea a linea con:
Código (cpp) [Seleccionar]
string str;
getline(cin, str);

// Y por ejemplo:
inventario[cont].chofer.cedula = stoi(str);


stoi() es una función útil que transforma una string a su valor numérico. Si trabajas con char* o char[], puedes usar "atoi(char* cadena, int longitud);".