多次元の配列

多次元の配列

前回、一次元の配列について解説しました。

一次元だけでなく、二次元・3次元と多次元の配列を扱いたい場合もあります。

そこで、今回は多次元の配列について説明します。

 

多次元にする場合は

データ型 変数名[要素数1][要素数2]…;

とします。例えば、

int count[10][20];

というように、一次元の配列の後ろにさらに付け足すだけでOKです。

プログラム

では、多次元の配列を使って2×2行列の掛け算の計算をするプログラムを作ってみましょう。

以下のようにプログラムを組みます。

#include <stdio.h>
int main(void){
int A[2][2],B[2][2],C[2][2],i,j,k;
//行列A,Bの入力
A[0][0]=1; A[0][1]=2;
A[1][0]=3; A[1][1]=4;
B[0][0]=1; B[0][1]=3;
B[1][0]=2; B[1][1]=4;
//行列Cの初期化
for(i=0;i<2;i++){
  for(j=0;j<2;j++){
    C[i][j]=0;
  }
}
//C=A*Bの計算
for(i=0;i<2;i++){
  for(j=0;j<2;j++){
    for(k=0;k<2;k++){ 
      C[i][j]=C[i][j]+A[i][k]*B[k][j];
    }
  }
}
//C=A*Bの表示
for(i=0;i<2;i++){
  for(j=0;j<2;j++){
    printf("C[%d,%d]=%d\n",i,j,C[i][j]);
  }
}
return 0;
}

ちょっと長いですが、がんばって解読しましょう。流れとしては、

  1. 行列の入力
  2. 行列Cを0にする
  3. 行列C=A*Bを計算する
  4. 行列Cを表示する

となっています。たぶん3の掛け算の部分が難しいと感じるかたが多いでしょうが、行列の掛け算の定義に基づいて解読すれば理解できるはずです。

実行すると以下のようになります。

C[0,0]=5
C[0,1]=11
C[1,0]=11
C[1,1]=25

著者:安井 真人(やすい まさと)