Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: aritter001 en 15 de Febrero 2017, 12:23
-
#include <stdio.h>
#include <stdlib.h>
int p173e1(){
int i=0; int alum0=0; int alum10=0; int alumapr=0; int alumsusp=0;
int alumnos[36];
char digito[2];
float alumnosuspe=0.0;
float alumnoapro=0.0;
FILE* fichero;
fichero=fopen("datosalumnos.txt","rt");
for (i=0;i<35;i++){
fgets(digito,50,fichero);
alumnos[i]=atoi(digito);
printf("%d\n",alumnos[i]);
}
fclose(fichero);
//CÁLCULOS
for (i=0;i<35;i++){
if (alumnos[i]>=5){
alumapr=alumapr+1;
printf(" %d",alumnos[i]);
printf("Alumno aprobado\n");
}
else{alumsusp=alumsusp+1;
printf(" %d",alumnos[i]);
printf("Alumno suspendido\n");
}
if (alumnos[i]==10)
{alum10=alum10+1;
}
if (alumnos[i]==0){
alum0=alum0+1;
}
}
alumnoapro=(float)(alumapr);
alumnosuspe=(float)(alumsusp);
printf("Alumnos aprobados: %lf\n",(alumnoapro/35)*100);
printf("Alumnos suspendidos: %lf\n",(alumnosuspe/35.0)*100);
printf("Alumnos de 10: %d\n",alum10);
printf("Alumnos de 0: %d", alum0);
return 0;
}
Visualizo lo que tengo en alumnos [ i ] y me salen bien los valores, pero una vez cerrado el fichero y calculados los valores que piden, el primer valor del array me sale 0 y en realidad es 6. Como solución he aumentado el tamaño del array a 36 y empezar el contador desde 1. Funcionaba, ni idea por qué, pero estoy seguro que en lo que he escrito he hecho alguna tontería y no se qué puede ser :/
AYUDEN PLZZZZZ
-
Hola aritter001.
Estuve mirando un poco tu código, y no sabría darte una explicación, pero si aumentas el tamaño de la variable "digito" o lo igualas al límite de caracteres que que recoges con fgets, funciona correctamente, me refiero a estas dos líneas.
char digito[50];
fgets(digito,50,fichero);
Espero que alguien con más conocimiento en Lenguaje C lo pueda aclarar.
Saludos. ;D