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:
la stampa a video: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; }
Dimenticavo MATRIX è stato precedentemente definito: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"); }
# define MATRIX float*

Rispondi quotando