C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++】行列の転置を求めるプログラムの作り方を解説

この記事では、入力された行列の転置行列(transpose)を求めて出力するC++プログラムを紹介します。転置行列とは、元の行列の行と列を入れ替えた行列のことで、m×n の行列の転置は n×m の行列になります。

転置行列とは?

転置行列では、元の行列の第 i 行が第 i 列へ、第 j 列が第 j 行へと入れ替わります。数式で表すと、元の行列 A の要素 A[i][j] は、転置行列では A[j][i] の位置に移動します。

例えば、3×3 の行列の場合、次のように行と列が入れ替わります。

元の行列:           転置行列:
6 7 1                6 3 9
3 2 5       →       7 2 12
9 12 11              1 5 11

アルゴリズム

Begin
   行列の行数と列数を入力する。
   行列の各要素を入力し、行列「A」に格納する。
   行と列を入れ替えることで転置行列を求める。
   元の行列と転置行列の両方を出力する。
End.

サンプルコード

#include<iostream>
using namespace std;
int main () {
    int A[10][10], a, b, i, j;
    cout << "Enter rows and columns of matrix : ";
    cin >> a >> b;
    cout << "Enter elements of matrix : ";
    for (i = 0; i < a; i++)
        for (j = 0; j < b; j++)
            cin >> A[i][j];
    cout << "Entered Matrix : \n";
    for (i = 0; i < a; i++) {
        for (j = 0; j < b; j++)
            cout << A[i][j] << " ";
        cout << "\n";
    }
    cout << "Transpose of Matrix : \n";
    for (i = 0; i < b; i++) {
        for (j = 0; j < a; j++)
            cout << A[j][i] << " ";
        cout << "\n";
    }
    return 0;
}

実行結果

Enter rows and columns of matrix : 3 3
Enter elements of matrix : 6 7 1 3 2 5 9 12 11
Entered Matrix :
6 7 1
3 2 5
9 12 11
Transpose of Matrix :
6 3 9
7 2 12
1 5 11

プログラムのポイント

  • 添字の入れ替え: 転置の出力時には A[j][i] のように添字を逆順にアクセスすることで、別の配列を用意せずに行と列を入れ替えて表示できます。
  • 計算量: 二重ループですべての要素を一度ずつ処理するため、時間計算量は O(行数 × 列数) となります。
  • 対応サイズ: この例では最大 10×10 の行列に対応しています。それ以上の大きさの行列を扱う場合は、配列サイズを変更するか、std::vector や動的メモリ確保を利用すると柔軟に対応できます。
  1. 隣接行列を使ってグラフを表現するC++プログラムの解説

    グラフの隣接行列(Adjacency Matrix)とは、サイズが V × V の正方行列のことです。ここでの V はグラフ G の頂点数を表します。行列の行と列にはそれぞれ頂点が対応しており、頂点 i から頂点 j への辺が存在する場合は、i 行 j 列の要素に「1」(重み付きグラフの場合は非ゼロの値)を格納します。辺が存在しない場合は、その位置には「0」が入ります。 隣接行列表現の計算量 隣接行列は計算時に O(V2) の記憶領域を必要とします。グラフが最大数の辺を持つ場合でも最小数の辺しか持たない場合でも、必要なメモリ量は同じです。つまり、辺の数に依存せず常に V × V 分の領域を確

  2. Pythonで行列の転置を求めるプログラム

    この記事では、与えられた問題に対する解法とアプローチについて詳しく解説します。 問題文 ある行列が与えられたとき、その転置を同じ行列に格納し、結果を表示する必要があります。 行列の転置とは、行を列に、列を行に入れ替えたものです。言い換えれば、行列Aの転置は、要素A[i][j]をA[j][i]と入れ替えることで得られます。 実装例 N = 4 def transpose(A): for i in range(N): for j in range(i+1, N): A[i][j], A[j][i] = A[j][i], A[i][j] # ドライ