![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
現在C#でプログラミング基礎から学んでいる文系のモノです。
Paizaラーニング上でC#入門編を行っており、
その中の、二次元配列の講座の部分で理解できなかった点があり質問させていただきます。
string[][] areaMap = new string[5][];
for (int i = 0; i < areaMap.Length; i++)
{
areaMap[i] = new string[10];
}
for (int i = 0; i < areaMap.Length; i++)
{
for (int j = 0; j < areaMap[i].Length; j++)
{
if(i % 2 == 0 && j % 2 == 0)
{
areaMap[i][j] = "+";
}
else
{
areaMap[i][j] = ".";
}
Console.Write(areaMap[i][j]);
}
Console.WriteLine();
}
上記のコードは、下記のドット絵を表示する処理になっております。
+.+.+.+.+.
. . . . . . . . . .
+.+.+.+.+.
. . . . . . . . . .
+.+.+.+.+.
私のイメージとしては、上記のドット絵は下記のような、配列で表示されていると考えております。
i,j
areaMap[0] = 0,0 0,1 0,2 0,3 0,4
areaMap[1] = 1,0 1,1 1,2 1,3 1,4
areaMap[2] = 2,0 2,1 2,2 2,3 2,4
areaMap[3] = 3,0 3,1 3,2 3,3 3,4
areaMap[4] = 4,0 4,1 4,2 4,3 4,4
今回理解できなかった点が、if(i % 2 == 0 && j % 2 == 0) この処理です。
i % 2 == 0 という部分は、横の列に対して指定しているという事は理解できていますが、
j % 2 == 0 という部分が、自分の考えている処理と違う為、
なぜこう表示されているのかいまいち理解が出来ていません。
私の考えでは、if(i % 2 == 0 && j % 2 == 0)
この処理で表示されるドット絵は下記の様になると思っていました。
++ .. ++ .. ++
. . . . .. .. ..
++ .. ++ .. ++
. . . . .. .. ..
++ .. ++ .. ++
言語化するとすれば、iの部分で偶数列が指定され、
尚且つjも偶数の部分のみ+で表示すると解釈しました。
areaMap[0] = 0,0 0,2 0,4
areaMap[1] =
areaMap[2] = 2,0 2,2 2,4
areaMap[3] =
areaMap[4] = 4,0 4,2 4,4
長文での質問で申し訳ございません。
私の考え方が間違っていると思うのですが、どなたか今一度訂正及び、
ドット絵の表記がなぜ一番初めに先述したようなドット絵になるのか、
ご教授いただければ幸いです。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
なんかあなたの「イメージ」が変な気はする.
とはいえ
areaMap[0] = 0,0 0,2 0,4
areaMap[1] =
areaMap[2] = 2,0 2,2 2,4
areaMap[3] =
areaMap[4] = 4,0 4,2 4,4
で生き残ってるところだけ+にすると
+.+.+.+.+.
. . . . . . . . . .
+.+.+.+.+.
. . . . . . . . . .
+.+.+.+.+.
のようになる, と思うものではないかなと感じるのだが, あなたはどうして
++ .. ++ .. ++
. . . . .. .. ..
++ .. ++ .. ++
. . . . .. .. ..
++ .. ++ .. ++
となる, と思った?
No.1
- 回答日時:
すみません、質問者様の「私の理解」の部分が理解できませんが、以下の解説で処理の理解の助けになればと思って書きます。
処理の考え1)
一番外側のループが i で、その中で j が処理されます。
つまり、値の設定は、areaMap[i][j] に代入するので、以下の順に処理されます。
areaMap[0][0]
areaMap[0][1]
areaMap[0][2]
~~~~ 中略 ~~~
areaMap[5][8]
areaMap[5][9]
処理の考え2)
表示も、上記の順になり、i のループの最後で改行されます。
つまり、
areaMap[0][0] =>+
areaMap[0][1] =>.
areaMap[0][2] =>+
areaMap[0][3] =>.
areaMap[0][4] =>+
改行
areaMap[1][0] =>.
areaMap[1][1] =>.
areaMap[1][2] =>.
areaMap[1][3] =>.
areaMap[1][4] =>.
改行
~~~~ 中略 ~~~
areaMap[4][3]
areaMap[4][4]
改行
という感じで、処理結果は正しいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
findは動くがfindnextがマクロ...
-
VBの質問#if 0 then ってどう...
-
vba 空のデータをSplitする時の...
-
Do~Loopした回数をカウントしたい
-
switch の範囲指定
-
取り消し線が入った文字を削除...
-
メルカリのメルカードで買い物...
-
エクセルVBA マクロ処理中のポ...
-
FFTの結果ついて
-
Loadイベント中にほかのイベン...
-
EXCEL VBA マクロ 実行する度に...
-
インタラクティブの反対語は?
-
JDBCでの大量データ検索でResul...
-
2重のDo~Loopは?
-
C# 画面のちらつきを解消したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
DoEventsがやはり分からない
-
switch の範囲指定
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
VBの質問#if 0 then ってどう...
-
VBAでCOPYを繰り返すと、処理が...
-
EXCEL VBA マクロ 実行する度に...
-
findは動くがfindnextがマクロ...
-
インタラクティブの反対語は?
-
UMLでの例外処理
-
リョウ・・・量?料?
-
Do~Loopした回数をカウントしたい
-
セックスレスの既婚女性は自慰...
-
月度は何て読みますか?
-
セルの値が0はクリアするマクロ
-
Loadイベント中にほかのイベン...
-
FFTの結果ついて
おすすめ情報