簡単な方法を使って2次元配列に数値を格納(初期化)してみましょう

てんC

「さきほど


2次元配列に数値を格納しましたが


もっと簡単なversionをご紹介いたしましょう。


先程の2次元配列のプログラムでは


次のように配列変数に数値を格納していきましたが


#include <stdio.h>


int main(void)

{

int hairetu[2][3];


hairetu [0][0]=1;

hairetu [0][1]=2;

hairetu [0][2]=3;

hairetu [1][0]=4;

hairetu [1][1]=5;

hairetu [1][2]=6;


printf("%d\n",hairetu [0][0]);

printf("%d\n",hairetu [0][1]);

printf("%d\n",hairetu [0][2]);

printf("%d\n",hairetu [1][0]);

printf("%d\n",hairetu [1][1]);

printf("%d\n",hairetu [1][2]);


return 0;

}


もっと簡単に


#include <stdio.h>


int main(void)

{

int hairetu[2][3]={{1,2,3},{4,5,6}};/*👈ここの部分ですね😊*/


printf("%d\n",hairetu [0][0]);

printf("%d\n",hairetu [0][1]);

printf("%d\n",hairetu [0][2]);

printf("%d\n",hairetu [1][0]);

printf("%d\n",hairetu [1][1]);

printf("%d\n",hairetu [1][2]);


return 0;

}

と記述することができます。


int hairetu[2][3];


hairetu [0][0]=1;

hairetu [0][1]=2;

hairetu [0][2]=3;

hairetu [1][0]=4;

hairetu [1][1]=5;

hairetu [1][2]=6;


の部分が

int hairetu[2][3]={{1,2,3},{4,5,6}};に変更されていますね。


int hairetu[2][3]={{1,2,3},{4,5,6}};


のように配列が初期化された場合


配列hairetuの

6つの配列変数


hairetu [0][0]

hairetu [0][1]

hairetu [0][2]

hairetu [1][0]

hairetu [1][1]

hairetu [1][2]



{{1,2,3},{4,5,6}};の左から順に


hairetu [0][0]=1;

hairetu [0][1]=2;

hairetu [0][2]=3;

hairetu [1][0]=4;

hairetu [1][1]=5;

hairetu [1][2]=6;



このような順序で数値が格納されていきます。


💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦

この

hairetu [0][0]

hairetu [0][1]

hairetu [0][2]

hairetu [1][0]

hairetu [1][1]

hairetu [1][2]

の並び方には規則性があります。


よ~く観察してみると

00

01

02

10

11

12


00から12へ昇順に少しづつ数値がおおきくなっています。


00

10

01

11

02

12

のように10の次が01で小さくなったり、11の次が02となったりと


ランダムな並び方にはなっていません。


💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦💦


それでは、


実際にint hairetu[2][3]={{1,2,3},{4,5,6}};のように


簡単な数値格納方法をつかって


2次元配列宣言をおこない


数値を2次元配列に格納する仕組みを


まなんでいきましょう。


まず はじめに


今の例と同じく


2次元配列 int hairetu[2][3]に簡単な数値格納方法をつかって


数値1,2,3,4,5,6を格納していきますが


int hairetu[2][3]={{1,2,3},{4,5,6}};の


{{1,2,3},{4,5,6}}はどのような規則にしたがって


構成されているのでしょうか?


int hairetu[2][1]

int hairetu[5][8]

int hairetu[3][6]


などでは どのように この簡略化した方法


つまり


この{{1,2,3},{4,5,6}}のような表現方法を使って


数値が格納できるのでしょうか?


簡単な数値格納方法は次の手順によって作成されます


まず


2次元配列宣言int hairetu[2][3]の[2]により


{  }{  }を2つ作ります。


そして


2次元配列宣言int hairetu[2][3]の[3]により


{  }のなかに3つ数値を格納する場所を確保していきます。


こんな感じです。{〇,〇,〇}{〇,〇,〇}


そして

左の{ }は0番目、右の{ }は1番目と順番をつけて


{ }のなかの〇は左から順に0番目、1番目、2番目と順番をつけると


00なら

{◎,〇,〇}{〇,〇,〇}の◎の位置

01なら

{〇,◎,〇}{〇,〇,〇}の◎の位置

02なら

{〇,〇,◎}{〇,〇,〇}の◎の位置

10なら

{〇,〇,〇}{◎,〇,〇}の◎の位置

11なら

{〇,〇,〇}{〇,◎,〇}の◎の位置

12なら

{〇,〇,〇}{〇,〇,◎}の◎の位置


の場所が対応してきます。


そして

00の位置に1

00の位置に2

00の位置に3

00の位置に4

00の位置に5

00の位置に6


を格納して


次のような形

{{〇,〇,〇},{〇,〇,〇}}の表記に


エレガントに仕上げると


int hairetu[2][3]={{1,2,3},{4,5,6}};となりますね。



このとき


00の位置に1

00の位置に2

00の位置に3

00の位置に4

00の位置に5

00の位置に6


を格納していますが


これは

hairetu [0][0]=1;

hairetu [0][1]=2;

hairetu [0][2]=3;

hairetu [1][0]=4;

hairetu [1][1]=5;

hairetu [1][2]=6;


のように配列変数に数値を格納することに対応しています。



数値を格納する場所をかえて


00の位置に3

01の位置に2

02の位置に1

10の位置に5

11の位置に4

12の位置に6


を格納して仕上げると


int hairetu[2][3]={{3,2,1},{5,4,6}};となります。


このとき


hairetu [0][0]=3;

hairetu [0][1]=2;

hairetu [0][2]=1;

hairetu [1][0]=5;

hairetu [1][1]=4;

hairetu [1][2]=6;


のように


配列変数に数値が格納されています



いかがでしたか?


もうひとつ


別の2次元配列宣言


int hairetu[5][2]をおこない


生成される配列変数

hairetu[0][0]

hairetu[0][1]

hairetu[1][0]

hairetu[1][1]

hairetu[2][0]

hairetu[2][1]

hairetu[3][0]

hairetu[3][1]

hairetu[4][0]

hairetu[4][1]

に1つずつ数値を格納するのでなく


簡単な数値格納方法をつかって数値を格納、初期化していきましょう。


int hairetu[5][2]の[5]から


まず{  }を5つ


このように

{  } {  } {  } {  } {  }

作ります。


次に

int hairetu[5][2]の[2]から


{  }の中に

2つ数値を格納する場所を確保していきます。

{〇,〇} {〇,〇} {〇,〇} {〇,〇} {〇,〇}


外側を{}で括って形を整えて


int hairetu[5][2]={{〇,〇},{〇,〇},{〇,〇},{〇,〇},{〇,〇}};


と2次元配列の数値を格納するいれものが完成しました。


ここで先程と同様に

一番左の{ }は0番目

その隣の右の{ }は1番目

その隣の右の{ }は2番目

その隣の右の{ }は3番目

その隣の右の{ }は4番目

と順番をつけて


{ }のなかの〇は左から順に0番目、1番目と順番をつけると


31なら

int hairetu[5] [2]={{〇,〇},{〇,〇},{〇,〇},{〇,◎},{〇,〇}};

の◎の部分が


20なら

int hairetu[5] [2]={{〇,〇},{〇,〇},{◎,〇},{〇,〇},{〇,〇}};

の◎の部分が対応してきます。


そして格納できる場所は

00

01

10

11

20

21

30

31

40

41

の計10個存在しています。


あとはこれらの00から41の場所に


希望の数値を格納していくことによって


2次元配列

int hairetu[5] [2]={{〇,〇},{〇,〇},{〇,〇},{〇,〇},{〇,〇}};

の初期化は終了します。


こんな感じに(^^)/

int hairetu[5] [2]={{1,7},{8,4},{5,55},{8,9},{10,120}};

こんな感じに(^^)/


このとき


配列hairetuの8つの配列変数には


hairetu[0][0]=1;

hairetu[0][1]=7;

hairetu[1][0]=8;

hairetu[1][1]=4;

hairetu[2][0]=5;

hairetu[2][1]=55;

hairetu[3][0]=8;

hairetu[3][1]=9;

hairetu[4][0]=10;

hairetu[4][1]=120;

と数値が格納されています。


マックス 「いやあ、全然出番なかったなあ。 なので、でてきたぜぇ」


てんC 「マックスさん 2次元配列についてはどうおもわれますか?」


マックス 「そう・・・


かまって、かまって motto

俺のことをぉぉぉぉぉ~~~」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます