Me pueden ayudar con este algoritmo

Iniciado por David Marquez, 24 Octubre 2016, 04:37 AM

0 Miembros y 1 Visitante están viendo este tema.

David Marquez

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...



#include<stdio.h>
#include<stdlib.h>

struct info_materia{
char materia[20];
int codigo;
int credito;
int calificacion;
}materia[4];

struct info_alumno{
char sexo[20];
char carrera[20];
int semestre;
int cedula;
int edad;
};

struct alumno{
char nombre[20];
struct info_alumno dato_alumno;
struct info_materia dir_materia;
float promedio;
}alumno[5];

int main(){
int i;

for(i=0;i<2;i++){
fflush(stdin);
printf("%d. Escriba su nombre: ",i+1);
gets(alumno[i].nombre);

printf("%d. Escriba su cedula: ",i+1);
scanf("%d",&alumno[i].dato_alumno.cedula);

printf("%d. escriba su sexo: ",i+1);
gets(alumno[i].dato_alumno.sexo);

printf("%d. escriba su edad: ",i+1);
scanf("%d",&alumno[i].dato_alumno.edad);

printf("%d. escriba su carrera: ",i+1);
gets(alumno[i].dato_alumno.carrera);

printf("%d. escriba su semestre",i+1 );
scanf("%d",&alumno[i].dato_alumno.semestre);

printf("\n");
}
for (i=0;i<2;i++){
printf("\nDatos del estudiante n° %d: ",i+1);

printf("\nNombre: %s",alumno[i].nombre);

printf("\nCedula: %d",alumno[i].dato_alumno.cedula);

printf("\nSexo: %s",alumno[i].dato_alumno.sexo);

printf("\nEdad:%s",alumno[i].dato_alumno.edad);

printf("\nCarrera: %s\n",alumno[i].dato_alumno.carrera);

printf("\nSemestre: %d\n",alumno[i].dato_alumno.semestre);
}
system ("pause");
return 0;
}



Mod: Los códigos deben ir en etiquetas GeSHi

class_OpenGL

Creo que el problema viene de cuando usas scanf (cliché). Prueba, a la hora de pedir el entero, esto:

char str_numero[10];

...

printf("%d. Escriba su cedula: ",i+1);
fgets(stdin, str_celula, 10);
alumno[i].dato_alumno.cedula = atoi(str_celula);

...

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

JufeXXC

#2
Eso sucede cuando se llana el buffer, intenta poner cin.ignore(); antes donde salta la linea



MOD: No reabrir temas antiguos
MOD: Tema cerrado