2017-05-24 5 views
1

の中にトランスポーズ私は行列を定義し、次のように値を割り当てるとしますマトリックス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 
    } 
    } 

は、どのように私はこの行列の転置を計算することができますか?私は以下を試しましたが、結果の行列が正しくありません。

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

「動作しませんでした」と正確にはどういう意味ですか?エラーメッセージはありますか? – Codor

+0

正しい行列@Codor – kkk

+0

を生成しませんでした。出力、実際の出力、および期待される出力を生成するためにスニペットを表示してください。 –

答えて

4

インデックス作成は次の方法で行う必要があります。

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]; 
    } 
}