Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: David Marquez en 24 Octubre 2016, 04:37 am



Título: Me pueden ayudar con este algoritmo
Publicado por: David Marquez en 24 Octubre 2016, 04:37 am
Este es mi codigo a la hora de compilar y ejecutar todo bn, pero al momento de llenar los campos cuando te pide el q ingreses el sexo se estropea , ejemplo


1. Escriba su nombre: Pedro
1. Escriba su cedula: 2476451
1. escriba su sexo: 1. escriba su edad: desde aqui aparece junto en vez de dar una opcion da dos
1. escriba su carrera: 1. escriba su semestre aqui igual

tengo varios dias con esta duda estoy aprendiendo lenguaje c solo y apenas llevo varios meses si me ayudaran explicando que esta mal se los agradeceria

quiero llenar una tabla con diferentes datos y mostrar en pantalla
este es el codigo completo.

gracias de antemano...



Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. struct info_materia{
  5. char materia[20];
  6. int codigo;
  7. int credito;
  8. int calificacion;
  9. }materia[4];
  10.  
  11. struct info_alumno{
  12. char sexo[20];
  13. char carrera[20];
  14. int semestre;
  15. int cedula;
  16. int edad;
  17. };
  18.  
  19. struct alumno{
  20. char nombre[20];
  21. struct info_alumno dato_alumno;
  22. struct info_materia dir_materia;
  23. float promedio;
  24. }alumno[5];
  25.  
  26. int main(){
  27. int i;
  28.  
  29. for(i=0;i<2;i++){
  30. fflush(stdin);
  31. printf("%d. Escriba su nombre: ",i+1);
  32. gets(alumno[i].nombre);
  33.  
  34. printf("%d. Escriba su cedula: ",i+1);
  35. scanf("%d",&alumno[i].dato_alumno.cedula);
  36.  
  37. printf("%d. escriba su sexo: ",i+1);
  38. gets(alumno[i].dato_alumno.sexo);
  39.  
  40. printf("%d. escriba su edad: ",i+1);
  41. scanf("%d",&alumno[i].dato_alumno.edad);
  42.  
  43. printf("%d. escriba su carrera: ",i+1);
  44. gets(alumno[i].dato_alumno.carrera);
  45.  
  46. printf("%d. escriba su semestre",i+1 );
  47. scanf("%d",&alumno[i].dato_alumno.semestre);
  48.  
  49. printf("\n");
  50. }
  51. for (i=0;i<2;i++){
  52. printf("\nDatos del estudiante n° %d: ",i+1);
  53.  
  54. printf("\nNombre: %s",alumno[i].nombre);
  55.  
  56. printf("\nCedula: %d",alumno[i].dato_alumno.cedula);
  57.  
  58. printf("\nSexo: %s",alumno[i].dato_alumno.sexo);
  59.  
  60. printf("\nEdad:%s",alumno[i].dato_alumno.edad);
  61.  
  62. printf("\nCarrera: %s\n",alumno[i].dato_alumno.carrera);
  63.  
  64. printf("\nSemestre: %d\n",alumno[i].dato_alumno.semestre);
  65. }
  66. system ("pause");
  67. return 0;
  68. }


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Me pueden ayudar con este algoritmo
Publicado por: class_OpenGL en 24 Octubre 2016, 09:16 am
Creo que el problema viene de cuando usas scanf (cliché). Prueba, a la hora de pedir el entero, esto:

Código
  1. char str_numero[10];
  2.  
  3. ...
  4.  
  5. printf("%d. Escriba su cedula: ",i+1);
  6. fgets(stdin, str_celula, 10);
  7. alumno[i].dato_alumno.cedula = atoi(str_celula);
  8.  
  9. ...


Título: Re: Me pueden ayudar con este algoritmo
Publicado por: JufeXXC en 1 Octubre 2020, 08:59 am
Eso sucede cuando se llana el buffer, intenta poner cin.ignore(); antes donde salta la linea



MOD: No reabrir temas antiguos
MOD: Tema cerrado