elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Explicarme esto si podeis :P (me urge)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Explicarme esto si podeis :P (me urge)  (Leído 3,181 veces)
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Explicarme esto si podeis :P (me urge)
« en: 24 Marzo 2011, 23:34 pm »

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:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct teams{ //puse structs porque no conseguia hacerlo con class
  5.    char nombre[30];
  6.    float et1, et2, et3, total;
  7. };
  8.  
  9. int main(){
  10.    unsigned int numcasos;
  11.    char caso[20];
  12.    teams piloto[30];
  13.    cin >> numcasos;
  14.  
  15.    for (unsigned int x=0; x<numcasos; x++){
  16.        cin >> caso; //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda
  17.        for (unsigned int y=0; y<30; y++){
  18.            cin >> piloto[y].nombre >> piloto[y].et1 >> piloto[y].et2 >> piloto[y].et3;
  19.            piloto[y].total = piloto[y].et1 + piloto[y].et2 + piloto[y].et3;
  20.  
  21.            cout << piloto[y].nombre <<" "<< piloto[y].et1 <<" "<< piloto[y].et2 <<" "<< piloto[y].et3 <<" "<< piloto[y].total;
  22.        }
  23.    }
  24.  
  25.    return 0;
  26. }
  27.  
  28.  

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 Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: Explicarme esto si podeis :P
« Respuesta #1 en: 24 Marzo 2011, 23:54 pm »

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:

Código
  1.    for (unsigned int x=0; x<numcasos; x++){
  2. //aca
  3.        cin >> caso; //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda
  4.        for (unsigned int y=0; y<30; y++){
  5.            //y aca para ignorar el '\n' que deja >> piloto[y].et3;
  6.           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

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Explicarme esto si podeis :P (me urge)
« Respuesta #2 en: 25 Marzo 2011, 00:01 am »

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 Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: Explicarme esto si podeis :P (me urge)
« Respuesta #3 en: 25 Marzo 2011, 00:10 am »

ttp://www.cplusplus.com/reference/iostream/istream/ignore/

Código
  1.    unsigned int numcasos;
  2.    char caso[20];
  3.    teams piloto[30];
  4.    cin >> numcasos;
  5.  
  6.    for (unsigned int x=0; x<numcasos; x++){
  7.        cin.ignore();
  8.        cin.ignore(caso,20); //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda
  9.        for (unsigned int y=0; y<30; y++){
  10.            cin.ignore();
  11.            cin.getline(piloto[y].nombre,30);
  12.            cin >> piloto[y].et1 >> piloto[y].et2 >> piloto[y].et3;
  13.            piloto[y].total = piloto[y].et1 + piloto[y].et2 + piloto[y].et3;
  14.  
  15.            cout << piloto[y].nombre <<" "<< piloto[y].et1 <<" "<< piloto[y].et2 <<" "<< piloto[y].et3 <<" "<< piloto[y].total;
  16.        }
  17.    }

Estas seguro que eso no te funciona?...  :-X 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

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Explicarme esto si podeis :P (me urge)
« Respuesta #4 en: 25 Marzo 2011, 00:23 am »

No, no me funciona, con tu codigo puedes escribir todo lo que quieras, que lo ignora xD
En línea

mael0c

Desconectado Desconectado

Mensajes: 34



Ver Perfil
Re: Explicarme esto si podeis :P (me urge)
« Respuesta #5 en: 25 Marzo 2011, 00:58 am »

Ola, usa
Código:
cin.get(caso,20); 
en vez de
Código:
cin >> caso; 

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

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: Explicarme esto si podeis :P (me urge)
« Respuesta #6 en: 25 Marzo 2011, 20:34 pm »

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 Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Explicarme esto si podeis :P (me urge)
« Respuesta #7 en: 26 Marzo 2011, 11:20 am »

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct teams{ //puse structs porque no conseguia hacerlo con class
  5.    char nombre[30];
  6.    float et1, et2, et3, total;
  7. };
  8.  
  9. int main(){
  10.    unsigned int numcasos;
  11.    char caso[20];
  12.    teams piloto[30];
  13.    cin >> numcasos;
  14.  
  15.    for (unsigned int x=0; x<numcasos; x++){
  16.        cin >> caso; //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda
  17.        for (unsigned int y=0; y<30; y++){
  18.            cin >> piloto[y].nombre >> piloto[y].et1 >> piloto[y].et2 >> piloto[y].et3;
  19.            piloto[y].total = piloto[y].et1 + piloto[y].et2 + piloto[y].et3;
  20.  
  21.            cout << piloto[y].nombre <<" "<< piloto[y].et1 <<" "<< piloto[y].et2 <<" "<< piloto[y].et3 <<" "<< piloto[y].total;
  22.        }
  23.    }
  24.  
  25.    return 0;
  26. }
  27.  
  28.  

No tengo mucha idea de C++, pero creo que las estructuras se definen como
Código
  1. 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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
esto me urge compañeros darme buestra opinion
Hacking Wireless
lealesdibua 1 2,187 Último mensaje 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,520 Último mensaje 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 3,870 Último mensaje 14 Junio 2011, 16:21 pm
por dvdr
Perdonen pueden explicarme para que sirve esto?
Redes
WIитX 4 2,595 Último mensaje 7 Abril 2014, 23:50 pm
por WIитX
Me urge descifrar esto
Seguridad
Ali Baba 4 3,026 Último mensaje 4 Enero 2017, 20:13 pm
por Ali Baba
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines