- ベストアンサー
初期化について教えてください
http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H13b2/pm10.html この問題のプログラムでコードの初期化の方法が分からないので教えてください 例えば、配列 M[0][1]をROADとするにはどうしたらいいのでしょうか? M[0][1] = ROAD; としたとしても、M[0][1] は入り口(ENTRANCE)の役割もあるので、上みたいにそのまま代入しても上手くいかないのですが、どうやっていいのか分かりません。 お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
配列の要素には1つの値しか入りませんので、配列 M[0][1]は「ROAD」よりも「ENTRANCE」が優先します。しかし、今回のプログラムの中では「ENTRANCE」を考慮していないようなので、このチェックを入れる必要がある(想像ですが入口から脱出して、当然配列はないから暴走?)。 今回の場合は外部変数の定義と一緒に初期化するのが最も簡単です。 int M[SMAX][SMAX] = { {WALL,ENTRANCE,WALL,WALL,WALL,WALL,WALL,WALL} /* 1行 */ ,{WALL,ROAD,ROAD,ROAD,ROAD,WALL,ROAD,WALL} /* 2行 */ ......... ,{WALL,WALL,WALL,WALL,WALL,WALL,EXIT,WALL} /* 8行 */ }; パターンがいくつかある場合はその場合によって色々やり方があります。簡単なのはパターン定義の配列からMへstrcpy()するなど。 パターンがとてもたくさんあるならまた別のやり方。のようにその場合により適宜、考えます。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
M[0][1]=ENTRANCE; でいいんじゃない? 要はプログラム次第だとも思える。
お礼
0x00 などのコードという言葉に混乱していました。 最初と最後のROADのところにENTRANCE,EXITをそのまま代入したらいいのですね。 無事完成することができました。 詳しい説明ありがとうございました。