2017-05-24 3 views
1

Supposons que je définir une matrice et affecter la valeur de la manière suivante:Matrice Transposer en C

double A[row * column]; 

for (int j = 0; j < column; j++){ 
    for (int i = 0; i < row; i++){ 
     A[j*row + i] = ((double)rand())/RAND_MAX; // random value 
    } 
    } 

Comment puis-je calculer la transposition de cette matrice? J'ai essayé ce qui suit mais la matrice résultante n'est pas correcte.

double B[column * row]; 

for(int j = 0; j < row; j++){ 
    for(int i = 0; i < column; i++){ 
     B[j*row + i] = A[i*row + j]; 
    } 
    } 
+0

Que voulez-vous dire par «ça n'a pas marché»? Y a-t-il un message d'erreur? – Codor

+0

Il n'a pas généré la matrice correcte @Codor – kkk

+0

Afficher l'extrait pour générer la sortie, la sortie réelle et la sortie attendue. –

Répondre

4

L'indexation doit être effectuée de la manière suivante.

double B[column * row]; 

for (int j = 0; j < row; j++){ 
    for (int i = 0; i < column; i++){ 
     B[j*column + i] = A[i*row + j]; 
    } 
}