• 締切済み

この問題を解きましたが解答があっているのかわかりません。また違う解答があれば参考に教えてください。

ます目の表現に MAX_R x MAX_C の 2 次元配列を用いているが、この配列を初期化するとき、関数 initboard() では、 void initboard(int board[][MAX_C]) { ... } と引数を2次元配列として定義している。この引数の定義を void initboard(int brd[]) { ... } と定義したとすると、関数 initboard() はどのように書けばよいか答えよ。 解答には関数 initboard() のみを記述すること。 私の解答 void initboard(int brd[]) { int i,j; for(i=0;i<;i++) for(j=0;j<;j++) brd[i][j]=EMPTY; } です。

みんなの回答

  • tt413323
  • ベストアンサー率9% (1/11)
回答No.2

>ます目の表現に MAX_R x MAX_C の 2 次元配列 例えば、MAX_Rが3、MAX_Cが5だったとします。 すると、 0→5 ↓□□□□□ 3□□□□□ □□□□□ 2次元配列のイメージはこうですよね? ※□は数字だと思ってください。 では、それを1次元配列にするには それぞれが左上から数えて何個目かを 求める式を考えれば答えは分かると思います。 それから、下の方もおっしゃられていますが For文の使い方をもう少し調べてみましょう。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

>for(i=0;i<;i++) >for(j=0;j<;j++) >brd[i][j]=EMPTY; この3行はコンパイルエラーになります。つまり不正解です。 正解へのヒント ・ヒント1 2次元配列 int array1[4][3]; は「intが3つ並んだ1次元配列が、4つ並んでる配列」と考えられます。つまり「intが3×4で12個並んでる」と言う事です。 ・ヒント2 2次元配列 int array2[][5]; は「intが5つ並んだ1次元配列が、いくつか並んでる配列」と考えられます。つまり「intが5の倍数個並んでる」と言う事です。 ・ヒント3 2次元配列 int array3[][MAX_C]; は「intがMAX_C個並んだ1次元配列が、いくつか並んでる配列」と考えられます。つまり「intがMAX_Cの倍数個並んでる」と言う事です。 ・ヒント4 2次元配列 int array4[MAX_R][MAX_C]; は「intがMAX_C個並んだ1次元配列が、MAX_R個並んでる配列」と考えられます。つまり「intがMAX_C×MAX_R個並んでる」と言う事です。 ・ヒント5 では、ヒント4の2次元配列であるarray4を void initboard(int brd[]) のように、引数brdとして受け取った場合、brdは「intが何個か並んでる配列」って事になります。 つまり、各要素は「brd[1]」とか「brd[i]」とか、1次元配列として扱う事になります。 ・ヒント6 では、ヒント5の「brd配列」は、要素が何個あるでしょう? ヒント6まで判ったら、もう正解が解かる筈です。

12gop
質問者

お礼

丁寧に教えていただきありがとうございます。 私の解答をどのようにすればよいのですか?

関連するQ&A

専門家に質問してみよう