[ Foro de C ]
Hola. He hecho este programa pero el problema radica en que el alum[i][j].prom no lee los valores del float por alguna razón. ¿Alguien sabe como ayudarme? POR FAVOR.
#include <stdio.h>
#include <stdlib.h>
#define fila 3
#define col 2
#define max 3
typedef struct infoAlum{
char nombre[15];
int matricula;
float cal[2];
float prom;
}alumnos;
int main(){
alumnos **alum;
int i,j,k;
float prom;
alum = (alumnos**)malloc(fila*sizeof(alumnos*));
// For para columnas
for(i=0;i<fila;i++){
alum[i]=(alumnos*)malloc(col*sizeof(alumnos));
}
printf("Introduzca los valores de la matriz\n");
for(i=0;i<fila;i++){
for(j=0;j<col;j++){
printf("Introduce el nombre del alumno numero [%d] [%d]\n",i+1,j+1);
scanf("%s", alum[i][j].nombre);
printf("Introduce la matricula del alumno numero [%d] [%d]\n",i+1,j+1);
scanf("%d",&alum[i][j].matricula);
for(k=0;k<max;k++){
printf("Introduce la calificacion %d del alumno numero [%d] [%d]\n",k+1,i+1,j+1);
scanf("%f",&alum[i][j].cal[k]);
printf("%f\n",alum[i][j].cal[k]);
alum[i][j].prom=(alum[i][j].cal[k]+alum[i][j].prom);
printf("La suma en turno %d es %f\n",k+1, alum[i][j].prom);
}
alum[i][j].prom =(alum[i][j].prom)/3;
printf("El promedio de %s es %f \n",alum[i][j].nombre, alum[i][j].prom);
}
}
for(i=0;i<fila;i++){
for(j=0;j<col;j++){
printf("Nombre: [%s] \t",alum[i][j].nombre);
printf("Matricula: [%d] \t",alum[i][j].matricula);
printf("Promedio [%.2f] \n",alum[i][j].prom);
}
}
// Liberando los apuntadores de memoria
for (i=0;i<fila;i++){
for(j=0;j<col;j++){
free(alum[i]);
free(alum);
}
}
}
El problema que encuentro con los promedios es que sumas antes de inicializar la variable prom
alum[i][j].prom=0.;
alum[i][j].prom=0.;
for(k=0; k<max; k++)
{
printf("Introduce la calificacion %d del alumno numero [%d] [%d]\n",k+1,i+1,j+1);
scanf("%f",&alum[i][j].cal[k]);
printf("%f\n",alum[i][j].cal[k]);
alum[i][j].prom=(alum[i][j].cal[k]+alum[i][j].prom);
printf("La suma en turno %d es %f\n",k+1, alum[i][j].prom);
}
alum[i][j].prom =(alum[i][j].prom)/3;
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)