回答編集履歴
5
余計な改行の除去とか
test
CHANGED
@@ -32,12 +32,10 @@
|
|
32
32
|
> 27〜31行目のbool型
|
33
33
|
|
34
34
|
について言えば,
|
35
|
-
27行目で `check=false;` としているから,
|
36
|
-
その直後の `if` で `break;` となったならば,`j` に関する for ループを抜けた時点での `check` の値は `false` であり,
|
35
|
+
27行目で `check=false;` としているから,その直後の `if` で `break;` となったならば,`j` に関する for ループを抜けた時点での `check` の値は `false` であり,
|
37
36
|
そうでないなら 31行目で `check=true;` とされるから、 `break;` でループを抜けなかった場合には `check` の値が `true` な状態となる.
|
38
37
|
…というだけです.
|
39
38
|
|
40
|
-
最初の数値を決めるとき( `i==0` のとき )にはこの `j` に関する for ループの内側は実施されないので
|
39
|
+
最初の数値を決めるとき( `i==0` のとき )にはこの `j` に関する for ループの内側は実施されないので
|
41
40
|
その場合には未初期化な `check` の値は不定なままとなりますが,
|
42
|
-
33行目のループ条件 `while (i > 0 && check == false);` のところでは,まず `i>0` の部分で偽になるので
|
41
|
+
33行目のループ条件 `while (i > 0 && check == false);` のところでは,まず `i>0` の部分で偽になるのでショートサーキットによって `check==false` の評価はなされないから大丈夫,ということになっています.
|
43
|
-
ショートサーキットによって `check==false` の評価はなされないから大丈夫,ということになっています.
|
4
解説を追記
test
CHANGED
@@ -21,3 +21,23 @@
|
|
21
21
|
一部を抜粋したならば,その抜粋された部分しか動作しないのは当たり前ではないでしょうか.
|
22
22
|
「生成されません」という文言が正しいかどうかは別として,生成した結果を表示するようなコードが含まれない「抜粋」の仕方をしたのであれば,動作結果が見えないということになるでしょう.それだけの話です.
|
23
23
|
|
24
|
+
## 模範解答の解説
|
25
|
+
|
26
|
+
> 模範回答の修正と解説
|
27
|
+
|
28
|
+
模範解答を修正しろ,とは如何なる要求なのか…? が分からないので以下は部分的な解説のみです.
|
29
|
+
|
30
|
+
動作については順を追って見ていけばよいだけかと思います.(コード内にコメントもたくさん書かれていますし)
|
31
|
+
|
32
|
+
> 27〜31行目のbool型
|
33
|
+
|
34
|
+
について言えば,
|
35
|
+
27行目で `check=false;` としているから,
|
36
|
+
その直後の `if` で `break;` となったならば,`j` に関する for ループを抜けた時点での `check` の値は `false` であり,
|
37
|
+
そうでないなら 31行目で `check=true;` とされるから、 `break;` でループを抜けなかった場合には `check` の値が `true` な状態となる.
|
38
|
+
…というだけです.
|
39
|
+
|
40
|
+
最初の数値を決めるとき( `i==0` のとき )にはこの `j` に関する for ループの内側は実施されないので、
|
41
|
+
その場合には未初期化な `check` の値は不定なままとなりますが,
|
42
|
+
33行目のループ条件 `while (i > 0 && check == false);` のところでは,まず `i>0` の部分で偽になるので
|
43
|
+
ショートサーキットによって `check==false` の評価はなされないから大丈夫,ということになっています.
|
3
誤変換修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
「被ったらもう一回サイコロを振り直せばいいよね」という方法では,「本当に運が悪ければずっと同じ目が出続けてなかなか終わらない(何なら永久に終わらない)こともあり得る」という意味では,効率面では最適ではないだろうと思います.
|
13
13
|
|
14
14
|
例えば,
|
15
|
-
`{ 0,1,2,3,4,5,6,7,8,9 }` という数値の集合を用意し,乱数を用いてこの集合から要素を1つ選択
|
15
|
+
`{ 0,1,2,3,4,5,6,7,8,9 }` という数値の集合を用意し,乱数を用いてこの集合から要素を1つ選択し,それを取り出す(「取り出す」なので,集合の要素は減っていく)ということを考えれば,「同じ目が出る」こと自体が無くなるので,効率は良いかもしれませんよね.
|
16
16
|
|
17
17
|
## 抜粋したら動作が変だとかいう話について
|
18
18
|
|
2
微修正
test
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
「被ったらもう一回サイコロを振り直せばいいよね」という方法では,「本当に運が悪ければずっと同じ目が出続けてなかなか終わらない(何なら永久に終わらない)こともあり得る」という意味では,効率面では最適ではないだろうと思います.
|
13
13
|
|
14
14
|
例えば,
|
15
|
-
`{ 0,1,2,3,4,5,6,7,8,9 }` という数値の集合を用意し,乱数を用いてこの集合から要素を1つ取り出す(「取り出す」なので,集合の要素は減っていく)ということを考えれば,「同じ目が出る」こと自体が無くなるので,効率は良いかもしれませんよね.
|
15
|
+
`{ 0,1,2,3,4,5,6,7,8,9 }` という数値の集合を用意し,乱数を用いてこの集合から要素を1つ選択肢,それを取り出す(「取り出す」なので,集合の要素は減っていく)ということを考えれば,「同じ目が出る」こと自体が無くなるので,効率は良いかもしれませんよね.
|
16
16
|
|
17
17
|
## 抜粋したら動作が変だとかいう話について
|
18
18
|
|
1
問題?点について追記
test
CHANGED
@@ -14,3 +14,10 @@
|
|
14
14
|
例えば,
|
15
15
|
`{ 0,1,2,3,4,5,6,7,8,9 }` という数値の集合を用意し,乱数を用いてこの集合から要素を1つ取り出す(「取り出す」なので,集合の要素は減っていく)ということを考えれば,「同じ目が出る」こと自体が無くなるので,効率は良いかもしれませんよね.
|
16
16
|
|
17
|
+
## 抜粋したら動作が変だとかいう話について
|
18
|
+
|
19
|
+
> 模範解答の抜粋では実行をかけてもprintf文が実行されるだけで、表示されるだけで数字は生成されません。
|
20
|
+
|
21
|
+
一部を抜粋したならば,その抜粋された部分しか動作しないのは当たり前ではないでしょうか.
|
22
|
+
「生成されません」という文言が正しいかどうかは別として,生成した結果を表示するようなコードが含まれない「抜粋」の仕方をしたのであれば,動作結果が見えないということになるでしょう.それだけの話です.
|
23
|
+
|