Salve,
per ottenere migliori prestazioni nel codice, ho deciso di salvare una matrice in un unico blocco di memoria allocandola con calloc(M*N,sizeof(float)) (M righe, N colonne). A questo punto devo calcolare la trasposta ma, non capisco perchè mi escono risultati sbagliati. Per il generico [i][j] ho usato: T[i*(m+1)+j]=X[j*(n+1)]. Vi posto il codice per maggiore chiarezza:

codice:
MATRIX trasposta(float* X, int m,int n) { 
    MATRIX trasp=alloc_matrix(n,m); 
    int i,j; 
 
    for (i = 0; i < n; i++) { 
 
        for (j = 0; j < m; j++) { 
 
            trasp[i*(n+1)+j]=X[j*(m+1)+i]; 
        } 
         
    } 
    return trasp; 
 
}
la stampa a video:
codice:
for(i=0;i<n;i++){ 
            for(j=0;j<m;j++){ 
                printf("T[%d][%d]=%ff ", i,j,T[i*(m+1)+j]); 
            } 
            printf("\n"); 
        }
Dimenticavo MATRIX è stato precedentemente definito:
# define MATRIX float*