回答編集履歴

2

追記0

2021/07/22 09:01

投稿

BeatStar
BeatStar

スコア4962

test CHANGED
@@ -76,6 +76,60 @@
76
76
 
77
77
 
78
78
 
79
+ そうすると、rnzk**配列**の方は初期化も代入もされていません。
80
+
81
+
82
+
83
+ 元のコードでは(関数内の)二番目のfor文では
84
+
85
+ 『上記を5回繰り返す』と書かれています。
86
+
87
+
88
+
89
+ なんか、勘違いしていそうな匂いです。
90
+
91
+
92
+
93
+ さらに、私が素直に読んだコードでは
94
+
95
+ 『kから5まで繰り返す』となっています。
96
+
97
+
98
+
99
+ これは合っていますかね?
100
+
101
+
102
+
103
+ 数直線を書いて考えるとわかりますよ。
104
+
105
+
106
+
107
+ そもそもkとはなんでしょうか。
108
+
109
+
110
+
111
+ 素直に読むと『1〜5の乱数』のはずです。
112
+
113
+
114
+
115
+ ということは、k=1もあり得るし、
116
+
117
+ k=5の場合もあり得る。
118
+
119
+
120
+
121
+ 例えば乱数が5、つまりk=5の場合、
122
+
123
+ 数直線で考えると、
124
+
125
+ 『一回だけしか処理しない』です。
126
+
127
+
128
+
129
+ おそらく、本来の意図とは違うはずです。
130
+
131
+
132
+
79
133
  つまり『基礎ができていないことが原因』です。
80
134
 
81
135
 
@@ -85,3 +139,5 @@
85
139
 
86
140
 
87
141
  [私の過去回答](https://teratail.com/questions/348395#reply-477662)を参考にして下さい。
142
+
143
+ **やる気があるのなら必ず読みましょう。**

1

コードの修正

2021/07/22 09:01

投稿

BeatStar
BeatStar

スコア4962

test CHANGED
@@ -10,39 +10,61 @@
10
10
 
11
11
 
12
12
 
13
- // rnzk関数定義
13
+ ```ここに言語入力
14
14
 
15
- function rnzk() {
15
+ // 配列を用意
16
16
 
17
- // 変数rnzkを要素数分の配列とする
17
+ var array = new Array(6);
18
18
 
19
- var rnzk = (array[Math.floor(Math.random() * array.length)]);
19
+ array[0] = "ポツ";
20
20
 
21
- // 変数kに1から5までの乱数を入れる
21
+ array[1] = "ザーッ";
22
22
 
23
- var k = Math.floor(Math.random() * 5) + 1;
23
+ array[2] = "ボタ";
24
24
 
25
- // kから5まで繰り返す
25
+ array[3] = "ポタ";
26
26
 
27
- for (var i = k; i <= 5; i++) {
27
+ array[4] = "ゴロ";
28
28
 
29
- // rnzkを出力
29
+ array[5] = "コン";
30
30
 
31
- document.write(rnzk);
32
31
 
33
- }
34
32
 
35
- }
33
+ // rnzk関数を定義
36
34
 
37
- // 5回繰り返す
35
+ function rnzk() {
38
36
 
39
- for (var i = 0; i < 5; i++) {
37
+        // 配列rnzkを用意
40
38
 
41
- // rnzk関数を呼び出して、戻り値を出力
39
+ var rnzk = (array[Math.floor(Math.random() * array.length)]);
42
40
 
43
- document.write(rnzk() + ":");
41
+        // 変数kに1〜5の乱数を設定
44
42
 
43
+ var k = Math.floor(Math.random() * 5) + 1;
44
+
45
+ // kから5まで繰り返す
46
+
47
+ for (var i = k; i <= 5; i++) {
48
+
49
+ // rnzkの値を出力
50
+
51
+ document.write(rnzk);
52
+
45
- }
53
+ }
54
+
55
+ }
56
+
57
+      // 5回繰り返す
58
+
59
+ for (var i = 0; i < 5; i++) {
60
+
61
+ // rnzk関数を呼び出して戻り値を表示
62
+
63
+ document.write(rnzk() + ":");
64
+
65
+ }
66
+
67
+ ```
46
68
 
47
69
 
48
70
 
@@ -55,3 +77,11 @@
55
77
 
56
78
 
57
79
  つまり『基礎ができていないことが原因』です。
80
+
81
+
82
+
83
+ プログラミングは『書いて終わり』ではありません。
84
+
85
+
86
+
87
+ [私の過去回答](https://teratail.com/questions/348395#reply-477662)を参考にして下さい。