ログイン

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

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

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

(回答2件)

質問したい内容

1つだけわからないところがあります

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

回答(2件)

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

(ループの中)

----------

double d = matrix[j][i];

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

maxtrix[i][j] = d;



himichu 1週間前
  • この通りにしたら、転置されずにそのまま

    1 2 3

    4 5 6

    7 8 9

    と表示されました。

    1 4 7

    2 5 8

    3 6 9

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

    教えてください。

    よろしくお願いします。

    1週間前
クリックして回答へコメントする

ごめん。

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

全部回したら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;

}

}

}

ベストアンサー
himichu 1週間前
  • 正しいプログラムになりました。詳しく教えてくださって本当にありがとうございました。

    1週間前
クリックして回答へコメントする

質問する

回答するには ログイン してください。
  • この回答を見た人は以下の回答も見ています