Autor
|
Tema: Explicarme esto si podeis :P (me urge) (Leído 3,425 veces)
|
El_Java
|
Hola, vereis, estoy haciendo un ejercicio en el que hay que comparar los tiempos de unos pilotos durante 3 tamos de carrera y mostrar el mayor, pero como no me salia, me he puesto a hacerlo paso por paso comprobando todos los pasos. Y he encontrado un fallo y no se porque ocurre esto: #include <iostream> using namespace std; struct teams{ //puse structs porque no conseguia hacerlo con class char nombre[30]; float et1, et2, et3, total; }; int main(){ unsigned int numcasos; char caso[20]; teams piloto[30]; cin >> numcasos; for (unsigned int x=0; x<numcasos; x++){ cin >> caso; //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda for (unsigned int y=0; y<30; y++){ cin >> piloto[y].nombre >> piloto[y].et1 >> piloto[y].et2 >> piloto[y].et3; piloto[y].total = piloto[y].et1 + piloto[y].et2 + piloto[y].et3; cout << piloto[y].nombre <<" "<< piloto[y].et1 <<" "<< piloto[y].et2 <<" "<< piloto[y].et3 <<" "<< piloto[y].total; } } return 0; }
El caso es que si omito la line cin >> code (que me pide el ejercicio que la ponga, pues debe introducirse para cada caso "caso N") funciona, pero si no lo quito aparecen muchisimos caracteres extraños, podeis decirme porque?
|
|
« Última modificación: 24 Marzo 2011, 23:53 pm por El_Java »
|
En línea
|
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
no tengo compilador a la mano pero quizas es que debes limpiar el buffer despues de leer el entero numcasos... coloca un cin.ignore() en la entrada de cada bucle y quizas se resuelva el problema: for (unsigned int x=0; x<numcasos; x++){ //aca cin >> caso; //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda for (unsigned int y=0; y<30; y++){ //y aca para ignorar el '\n' que deja >> piloto[y].et3; cin >> piloto[y].nombre >> piloto[y].et1 >> piloto[y].et2 >> piloto[y].et3;
Quizas sea ese el error quizas no xD si no es avisas y cuando tenga compiler a la mano te ayudo Saludos...
|
|
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja
|
|
|
El_Java
|
aun asi me pasa igual... ademas, es que necesito usar cin.getline porque en los casos de prueba habra que poner " Caso 1", y no "Caso1"... lo mismo es que no coloque bien el cin.ignore(), es una funcion que nunca he entendido demasiado bien...
|
|
|
En línea
|
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
ttp://www.cplusplus.com/reference/iostream/istream/ignore/ unsigned int numcasos; char caso[20]; teams piloto[30]; cin >> numcasos; for (unsigned int x=0; x<numcasos; x++){ cin.ignore(); cin.ignore(caso,20); //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda for (unsigned int y=0; y<30; y++){ cin.ignore(); cin.getline(piloto[y].nombre,30); cin >> piloto[y].et1 >> piloto[y].et2 >> piloto[y].et3; piloto[y].total = piloto[y].et1 + piloto[y].et2 + piloto[y].et3; cout << piloto[y].nombre <<" "<< piloto[y].et1 <<" "<< piloto[y].et2 <<" "<< piloto[y].et3 <<" "<< piloto[y].total; } }
Estas seguro que eso no te funciona?... No tengo compiler... edit: es cin.getline(caso,20)... luego veo bien cual es el problema entonces :\
|
|
« Última modificación: 25 Marzo 2011, 00:44 am por .:BlackCoder:. »
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja
|
|
|
El_Java
|
No, no me funciona, con tu codigo puedes escribir todo lo que quieras, que lo ignora xD
|
|
|
En línea
|
|
|
|
mael0c
Desconectado
Mensajes: 34
|
Ola, usa en vez de El motivo del error creo que es el que te dice .:BlackCoder:., de todas formas, haciendo la substitución anterior, a mi me compiló y se ejecutó perfectamente.
|
|
|
En línea
|
|
|
|
El_Java
|
Si que me funciona ahora, pero al mostrarlo me muestra el nombre del piloto sin la primera letra, por ejemplo, de Juan me muestra uan :S
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
#include <iostream> using namespace std; struct teams{ //puse structs porque no conseguia hacerlo con class char nombre[30]; float et1, et2, et3, total; }; int main(){ unsigned int numcasos; char caso[20]; teams piloto[30]; cin >> numcasos; for (unsigned int x=0; x<numcasos; x++){ cin >> caso; //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda for (unsigned int y=0; y<30; y++){ cin >> piloto[y].nombre >> piloto[y].et1 >> piloto[y].et2 >> piloto[y].et3; piloto[y].total = piloto[y].et1 + piloto[y].et2 + piloto[y].et3; cout << piloto[y].nombre <<" "<< piloto[y].et1 <<" "<< piloto[y].et2 <<" "<< piloto[y].et3 <<" "<< piloto[y].total; } } return 0; }
No tengo mucha idea de C++, pero creo que las estructuras se definen como struct teams piloto [30]
¿Y si probases con funciones de C? Tipo fgets ()... Por el resto debería de funcionar, no veo tus fallos... Un saludo. Sagrini
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
esto me urge compañeros darme buestra opinion
Hacking Wireless
|
lealesdibua
|
1
|
2,369
|
9 Mayo 2010, 11:05 am
por ChimoC
|
|
|
podeis explicarme sobre recogerle programas a una distro y pasarselo a otra
GNU/Linux
|
dvdr
|
7
|
3,816
|
23 Marzo 2011, 18:34 pm
por dvdr
|
|
|
podrian explicarme un efecto en compiz girar el cubo con la rueda del raton (S
GNU/Linux
|
dvdr
|
1
|
4,070
|
14 Junio 2011, 16:21 pm
por dvdr
|
|
|
Perdonen pueden explicarme para que sirve esto?
Redes
|
WIитX
|
4
|
2,828
|
7 Abril 2014, 23:50 pm
por WIитX
|
|
|
Me urge descifrar esto
Seguridad
|
Ali Baba
|
4
|
3,370
|
4 Enero 2017, 20:13 pm
por Ali Baba
|
|