以下のような表を保存したい場合、どうすればいいでしょうか?
| 太郎さん | 次郎さん | 三郎さん | ペケ男くん | 花子さん | ペケ子さん | |
| 英語 | 88 | 98 | 74 | 54 | 83 | 99 |
| 数学 | 83 | 100 | 85 | 23 | 64 | 21 |
| 国語 | 93 | 95 | 72 | 43 | 87 | 34 |
| 理科 | 91 | 88 | 68 | 38 | 74 | 32 |
| 社会 | 89 | 94 | 95 | 21 | 90 | 13 |
方法① 5教科×6人分の値を保存するための変数を1個ずつ30個作成
方法② 英語を保存する配列、数学を保存する配列…を作成
方法③ 太郎さんの5教科分を保存する配列、次郎さんの5教科分を保存する配列、…を作成
全部面倒なので、一括で保存する方法が多次元配列です。
int int_array[10][6];
と宣言すれば、このような配列が簡単に作れます。
| [0]列目 | [1]列目 | [2]列目 | [3]列目 | [4]列目 | [5]列目 | |
| [0]行目 | [0][0] | [0][1] | [0][2] | [0][3] | [0][4] | [0][5] |
| [1]行目 | [1][0] | [1][1] | [1][2] | [1][3] | [1][4] | [1][5] |
| [2]行目 | [2][0] | [2][1] | [2][2] | [2][3] | [2][4] | [2][5] |
| [3]行目 | [3][0] | [3][1] | [3][2] | [3][3] | [3][4] | [3][5] |
| [4]行目 | [4][0] | [4][1] | [4][2] | [4][3] | [4][4] | [4][5] |
| [5]行目 | [5][0] | [5][1] | [5][2] | [5][3] | [5][4] | [5][5] |
| [6]行目 | [6][0] | [6][1] | [6][2] | [6][3] | [6][4] | [6][5] |
| [7]行目 | [7][0] | [7][1] | [7][2] | [7][3] | [7][4] | [7][5] |
| [8]行目 | [8][0] | [8][1] | [8][2] | [8][3] | [8][4] | [8][5] |
| [9]行目 | [9][0] | [9][1] | [9][2] | [9][3] | [9][4] | [9][5] |
<多次元配列の扱い方>
上記の成績表を多次元配列として初期化、及び表示をしてみます。
#include <stdio.h>
int main(){
//多次元配列の初期化
int int_array[5][6] = {
{88, 98, 74, 54, 83, 99},
{83, 100, 85, 23, 64, 21},
{93, 95, 72, 43, 87, 34},
{91, 88, 68, 38, 74, 32},
{89, 94, 95, 21, 90, 13}
};
//取り出し方
//for文のネストを利用する
//外側のループ:行のループ
for(int i = 0; i<5; ++i){
//内側のループ:列のループ
for(int j =0; j<6; ++j){
printf("%d\t", int_array[i][j]);
}
printf("\n");
}
return 0;
}
//演習問題
以下の表を多次元配列で初期化・及び表示を行なってください。
| 太郎さん | 次郎さん | 三郎さん | ペケ男くん | 花子さん | ペケ子さん | |
| 午前 | 72 | 61 | 67 | 32 | 65 | 63 |
| 午後 | 58 | 63 | 72 | 35 | 59 | 61 |
また、合格者が何名いるのかも表示してください。