codice:#include<stdio.h> #include<stdlib.h> void alloca_matrice(int***,int*,int*); void riempi_matrice(int***,int,int); void stampa(int**,int); int main() { int** matrice=NULL; int dimensione=0; int elementi=0; alloca_matrice(&matrice,&dimensione,&elementi); riempi_matrice(&matrice,dimensione,elementi); stampa(matrice,dimensione); system("pause"); return 0; } void alloca_matrice(int***m,int*dim,int*num) { FILE* fp=NULL; int i; int end=0; fp=fopen("seq.dat","rb"); fseek(fp,0,SEEK_END); end=ftell(fp); fseek(fp,0,SEEK_SET); while((ftell(fp))!=end) { (*num)++; fseek(fp,sizeof(int),SEEK_CUR); printf("2"); } *dim=((*num)/2); fseek(fp,(*dim)*sizeof(int),SEEK_SET); fread(dim,sizeof(int),1,fp); if(((*dim)*(*dim))<(*num)) { printf("Il file contiene più interi di quanti ne puo' contenere la matrice"); exit(1); } else { *m=malloc((*dim)*sizeof(int)); for(i=0;i<(*dim);i++); { (**m)[i]=malloc((*dim)*sizeof(int)); } } fclose(fp); printf("1"); printf("\nnum= %d", *num); printf("\ndim= %d", *dim); } void riempi_matrice(int*** m,int dim,int num) { FILE*fp=NULL; int i,j; int flag=0; fp=fopen("seq.dat","rb"); do { for(i=0;i<dim;i++) { for(j=0;j<dim;j++) { if(flag==((num/2)+1)) {} else { fread((&m)[i][j],sizeof(int),1,fp); flag++; printf("\n%d %d %d %d",i,j,num,flag); } } } } while((i+j)<num); for(;i<dim;i++) { for(;j<dim;j++) { (*m)[i][j]=0; } } fclose(fp); printf("2"); } void stampa(int** m,int dim) { int i,j; for(i=0;i<dim;i++) { for(j=0;j<dim;j++) { printf("%d", m[i][j]); } printf("/n"); } }