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*