Buenas, estoy aprendiendo lenguaje C y encontre este ejercicio:
"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:
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?
"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 [Seleccionar]
#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 [Seleccionar]
#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;
}