• ベストアンサー

初期化について教えてください

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)の役割もあるので、上みたいにそのまま代入しても上手くいかないのですが、どうやっていいのか分かりません。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

配列の要素には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()するなど。 パターンがとてもたくさんあるならまた別のやり方。のようにその場合により適宜、考えます。

yuyakiyo
質問者

お礼

0x00 などのコードという言葉に混乱していました。 最初と最後のROADのところにENTRANCE,EXITをそのまま代入したらいいのですね。 無事完成することができました。 詳しい説明ありがとうございました。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

M[0][1]=ENTRANCE; でいいんじゃない? 要はプログラム次第だとも思える。

関連するQ&A