float ***M;
**M=(float *)malloc(sizeof(float)*i);
for(j=0;j<i;j++)
{
*M[j]=(float *)malloc(sizeof(float)*3);
for(k=0;k<d[j].numero_anyo;k++)
M[j][k]=(float*)malloc(sizeof(float)*5);
}
i es la cantidad de alumnos
asi obtendrias una una matriz de M[3][5]
si fuesen 10 alumnos la matriz seria M[10][3][5]
espero que me entiendas, pones los * donde estan los que te mando yo....
espero que te sirva
Gracias por tu ayuda eres un cielo.
Me está sirviendo de mucho.
Saludos Mercedes
Hola aqui estoy de nuevo, he tardado en contestarte, porque he estado muy liada con los examenes, veras aqui tengo el codigo entero de todo lo que tu me dijiste, pero no me compila bien.Por favor, si puedes ayudarme, necesito esta practica, para mi examen, tengo que comprenderla bien, y saberla hacer, y estoy super apurada.Porque me resulta de muy dificil comprension.
Gracias por todo.
Saludos Mercedes
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>
struct alumno
{
char DNI[10];
char nombre[25];
char apellidos[50];
int numero_agno;
};
typedef struct alumno DATOSALUMNO;
main()
{
FILE *fp;
FILE *ficbin;
DATOSALUMNO *d;
char car;
char dni[10];
int i,j,k;
char nombre[25];
char apellidos[50];
int numero_agno;
if((fp=fopen("alumnos.txt", "r"))== NULL)
{
printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
getch();
return -1;
}
else
{
i= 0;
while(!feof(fp))//cuenta cuantos alumnos hay en el archivo
{
fscanf(fp, "%d %s", &j, dni); /*j sera para el numero identificativo*/
i++; /*i cuenta las filas*/
}
d = (DATOSALUMNO*)malloc(sizeof(DATOSALUMNO)*i); // crea una estructura de
//tipo puntero
//para guardar los alumnos
fseek(fp, 0, SEEK_SET); //posiciona el puntero
for(j=0; j<i; j++) //inicializa la estructura a 0
{
d[j].DNI[0] = '\0';
d[j].nombre[0] = '\0';
d[j].apellidos[0] = '\0';
d[j].numero_agno = '\0';
}
i = 0; /*cuenta las filas*/
while(!feof(fp)) //coloca los datos en la estructura
{
fscanf(fp, "%d %s", &j, d
.DNI);
i++;
}
fclose(fp);
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
getch();
return -1;
}
else
{
for(j=0;j<i;j++)//pide los datos restantes
{
system("clear");
fflush(stdin);
printf("Datos del alumnos con DNI: %s\n\n",d[j].DNI);
printf("Introduzca los Apellidos: ");
gets(d[j].apellidos);
fflush(stdin);
printf("Introduzca el Nombre: ");
gets(d[j].nombre);
fflush(stdin);
printf("Introduzca el Numero de años: ");
scanf("%d",&d[j].numero_agno);
fflush(stdin);
fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin); /*guarda los datos en
un archivo binario*/
}
}
fclose(ficbin);
free(d);
}
float ***M;
**M=(float *)malloc(sizeof(float) *i);
(for j= 0; j<i; j++)
{
*M[j] = (float)malloc(sizeof(float)*3);
for(k=0; k<d[j].numero_agno; k++)
M[j][k]=(float*)malloc(sizeof(float)*5);
}
/*i es la cantidad de alumnos M[3][5]*/
/*M[5][2][3] seria la 4ºasignatura del 3º año del sexto alumno*/