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

てんC


「さきほど


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


もっと簡単に数値データを格納できるversionをご紹介いたしましょう。


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


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

👇

#include <iostream>


using namespace std;


int main(){


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;


cout<<hairetu [0][0]<<"\n";

cout<<hairetu [0][1]<<"\n";

cout<<hairetu [0][2]<<"\n";

cout<<hairetu [1][0]<<"\n";

cout<<hairetu [2][1]<<"\n";

cout<<hairetu [3][2]<<"\n";


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 } };


とかきかえて



#include <iostream>


using namespace std;


int main()


{


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



cout << hairetu[0][0] << "\n";

cout << hairetu[0][1] << "\n";

cout << hairetu[0][2] << "\n";

cout << hairetu[1][0] << "\n";

cout << hairetu[1][1] << "\n";

cout << hairetu[1][2] << "\n";


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}};


のように


2次元配列が初期化された場合


2次元配列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次元配列hairetuの簡単な初期化方法である

👇

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


を実行して


2次元配列hairetuに


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


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



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


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


2次元配列宣言


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

01の位置に2

02の位置に3

10の位置に4

11の位置に5

12の位置に6


を格納して


外側を{}で囲む次のような形

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


エレガントに仕上げると


{{1,2,3},{4,5,6}}


が完成します


{{1,2,3},{4,5,6}}を用いれば


配列宣言

int hairetu[2][3]



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


と初期化することができます


このとき


00の位置に1

01の位置に2

02の位置に3

10の位置に4

11の位置に5

12の位置に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


を格納して仕上げると


{{3,2,1},{5,4,6}}


が生成されます


{{3,2,1},{5,4,6}}


を用いれば


配列宣言

int hairetu[2][3]



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つずつ数値を格納するのでなく


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


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]


数値データを格納、初期化していきましょう。


まず


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


まず{  }を5つ


このように


{  } {  } {  } {  } {  }


作ります。


次に


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


{  }の中に


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


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


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


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


を作製します


2次元配列hairetuを初期化するための数値データを格納するいれものが完成しました。


ここで先程と同様に


一番左の{ }は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の場所に


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


hairetuの2次元配列宣言、初期化


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


は終了します。


こんな感じに(^^)/

👇

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

👆

こんな感じに(^^)/


このとき


2次元配列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で共有
  • はてなブックマークでブックマーク

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る