"Crear un programa relativo a un fichero con notas de 35 alumnos del que se quieren extraer datos estadísticos (% de aprobados, % de suspensos, número de alumnos con puntuación 10 y número de alumnos con puntuación 0). Considerar que los datos se encuentran en un fichero cuyo nombre es notas.dat"
El codigo que escribi es el siguiente:
Código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int notas[35];
int i=0;
float aprobados=0;
float reprobados=0;
int dieces=0;
int ceros=0.;
puts("Programa de notas de clase.");
FILE* fichero;
fichero=fopen("c:\\notas.dat","rt");
for(i=0;i<35;i++)
{
fscanf(fichero,"%d",¬as[i]);
}
fclose(fichero);//cerramos el fichero con los datos extraidos
for(i=0;i<35;i++);
{
printf("%d\n",notas[i]);
if(notas[i] >= 5)
{
aprobados=aprobados+1;
}
else
{
reprobados=reprobados+1;
}
if(notas[i]==10)
{
dieces=dieces+1;
}
if(notas[i]==0)
{
ceros=ceros+1;
}
} //cerramos el for
printf("Hay un total de %f alumnos aprobados\n",aprobados);
printf("Hay un total de %f alumnos reprobados\n",reprobados);
aprobados=(aprobados/35)*100;
reprobados=(reprobados/35)*100;
printf("Hay un total de %d alumnos con diez\n",dieces);
printf("Hay un total de %d alumnos con cero\n",ceros);
printf("El porcentaje de alumnos aprobados es de %f \n",aprobados);
printf("El porcentaje de alumnos reprobados es de %f \n",reprobados);
return 0;
}
El problema es que cuando pido imprimir por pantalla el valor de notas[ i ] el programa me muestra el numero 2009261424 en vez de los diferentes valores del array. Pero si reescribo el codigo de la siguiente forma el programa funciona, ¿por que?
Código:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int notas[35];
int i=0;
float aprobados=0;
float reprobados=0;
int dieces=0;
int ceros=0.;
puts("Programa de notas de clase.");
FILE* fichero;
fichero=fopen("c:\\notas.dat","rt");
for(i=0; i<35; i++)
{
fscanf(fichero,"%d",¬as[i]);
if(notas[i] >= 5)
{
aprobados=aprobados+1;
}
else
{
reprobados=reprobados+1;
}
if(notas[i]==10)
{
dieces=dieces+1;
}
if(notas[i]==0)
{
ceros=ceros+1;
}
}
fclose(fichero);//cerramos el fichero con los datos extraidos
printf("Hay un total de %f alumnos aprobados\n",aprobados);
printf("Hay un total de %f alumnos reprobados\n",reprobados);
aprobados=(aprobados/35)*100;
reprobados=(reprobados/35)*100;
printf("Hay un total de %d alumnos con diez\n",dieces);
printf("Hay un total de %d alumnos con cero\n",ceros);
printf("El porcentaje de alumnos aprobados es de %f \n",aprobados);
printf("El porcentaje de alumnos reprobados es de %f \n",reprobados);
return 0;
}