ログイン

お使いのブラウザ(Internet Explorer)では閲覧、ログイン、質問の作成や回答などに不具合が生じることがございます。
誠に恐れ入りますが、下記の推奨ブラウザをご利用くださいませ。

推奨ブラウザ:Google Chrome(グーグル・クローム)

正しく転置行列を求めるにはどうしたらいいのでしょうか?

C++で転置行列を求めるプログラムです。
このプログラムで開始すると
1 2 3
4 5 6
7 8 9
という行列を入力すると
1 2 3
2 5 6
3 6 9
という行列が表示されます。
正しく転置行列を求めるにはどうしたらいいのでしょうか?
教えてください。よろしくお願いします。
Aya さんの質問 勉強レベル7
2か月前

回答(2件)

入れ替えがしたいのなら、以下のようにしてはじめに書く方を一時変数に退避してください。

(ループの中)

----------

double d = matrix[j][i];

maxtrix[j][i] = maxtrix[i][j];

maxtrix[i][j] = d;



  • この通りにしたら、転置されずにそのまま

    1 2 3

    4 5 6

    7 8 9

    と表示されました。

    1 4 7

    2 5 8

    3 6 9

    と表示されるようにするにはどうしたらいいでしょうか?

    教えてください。

    よろしくお願いします。

    2か月前
回答へコメントする
ベストアンサーに選ばれました

ごめん。

行列の転置がしたいなら、ループは行列の上三角だけ回さなければいけないことを忘れていた。

全部回したら2回転置して、元に戻ってしまう。


以下、参考にしてください。


------------------


void

swap_matrix(void)

{

int matlen = 3;


int i, j;

for (i = 0; i < matlen; i++)

{

for (j = 0; j < i; j++)

{

double d;

d = mat[j][i];

mat[j][i] = mat[i][j];

mat[i][j] = d;

}

}

}

  • 正しいプログラムになりました。詳しく教えてくださって本当にありがとうございました。

    2か月前
回答へコメントする

質問する

  • この質問を見た人は以下の質問も見ています