Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/02/2011, 17:56
aitorcan18
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta peta el programa con la variable float de un ejemplo sencillo con estructuras(struct)

Este es el ejemplo que tengo, me deja poner la nota de los 6 primeros alumnos y en el alumno 7 no, me peta el programa, tengo entendido que aveces la variable float en struct no funciona muy bien, pero se que hay alguna solucion, alguien me puede ayudar, trabajo con el dev-c++.

#include<stdio.h>

struct ficha
{
char nom[20];
char cognom[100];
int edat;
float nota;
char obs[200];
};//ficha

main()
{
int imax,max,i;
struct ficha f1[10];

for(i=0;i<10;i=i+1)//for1
{
printf("Nombre alumno %d : ",i+1);
gets(f1[i].nom);

printf("Apellido alumno %d : ",i+1);
gets(f1[i].cognom);

do{
printf("Edat alumno %d : ",i+1);
scanf("%d",&f1[i].edat);
}while((f1[i].edat<13)||(f1[i].edat>20));

do{
printf("Nota alumno %d : ",i+1);
scanf("%.2f",&f1[i].nota);
}while((f1[i].nota<0)||(f1[i].nota>10));
fflush(stdin);
printf("Obeservaciones alumno %d : ",i+1);
gets(f1[i].obs);
}//for 1
getch();

for(i=0;i<10;i=i+1)//for 2
{
printf("Alumno %d\n ",i+1);
printf("%s\n",f1[i].nom);
printf("%s\n",f1[i].cognom);
printf("%d\n",f1[i].edat);
printf("%.2f\n",f1[i].nota);
printf("%s\n",f1[i].obs);
}//for 2
getch();

max=0;
for(i=0;i<10;i=i+1)//for 3 (x la nota maxima de els 10 alumns)
{
if(f1[i].nota>=max)
{
max=f1[i].nota;
imax=i;
}
}//for 3

printf("%s\n",f1[imax].nom);
printf("%s\n",f1[imax].cognom);
printf("%d\n",f1[imax].edat);
printf("%.2f\n",f1[imax].nota);
printf("%s\n",f1[imax].obs);
getch();
}