質問編集履歴

4

変数xの名称をnに変更

2019/12/06 16:19

投稿

hadake7616
hadake7616

スコア8

test CHANGED
File without changes
test CHANGED
@@ -4,17 +4,19 @@
4
4
 
5
5
 
6
6
 
7
- サイコロを3つ同時になげて目の和(x)になるのは何通りあるかのプログラムを書きました
7
+ サイコロを3つ同時になげて目の和(n)になるのは何通りあるかのプログラムを書きました
8
8
 
9
- 入力された値をx 何通りあるかをcountにしました。がうまくいきません。
10
9
 
10
+
11
+ 入力された値「n」になるパターンが何通りあるかをcountにしました。がうまくいきません。
12
+
11
- xの範囲は 3<=x<=18です
13
+ nの範囲は 3<=n<=18です
12
14
 
13
15
  です
14
16
 
15
17
 
16
18
 
17
- 例:x=3の時は(1,1,1)しかないのでcount=1
19
+ 例:n=3の時は(1,1,1)しかないのでcount=1
18
20
 
19
21
  ### コードの説明
20
22
 
@@ -22,9 +24,9 @@
22
24
 
23
25
 
24
26
 
25
- 与えられたxをdice配列に格納する。
27
+ 与えられたnをdice配列に格納する。
26
28
 
27
- dice[0]=1(1の目)、dice[1]=1(1の目)、dice[2]=x-2した値を初期値としていれる
29
+ dice[0]=1(1の目)、dice[1]=1(1の目)、dice[2]=n-2した値を初期値としていれる
28
30
 
29
31
  dice[2]>6になるまで、dice[2]-=1 dice[1]=+1する
30
32
 
@@ -36,13 +38,13 @@
36
38
 
37
39
  例1
38
40
 
39
- x=4のとき
41
+ n=4のとき
40
42
 
41
43
  [1,1,2]→[1,2,1]→[2,1,1] 3通り
42
44
 
43
45
  例2:
44
46
 
45
- x=18のとき
47
+ n=18のとき
46
48
 
47
49
  [6,6,6] 1通り
48
50
 
@@ -58,7 +60,11 @@
58
60
 
59
61
  問題の説明文を修正しました。
60
62
 
61
- xは3<=x<=18の範囲で入力されるものとします。
63
+ nは3<=n<=18の範囲で入力されるものとします。
64
+
65
+
66
+
67
+
62
68
 
63
69
 
64
70
 
@@ -72,7 +78,7 @@
72
78
 
73
79
 
74
80
 
75
-
81
+ xが見にくいためnに変更しました
76
82
 
77
83
 
78
84
 
@@ -96,9 +102,9 @@
96
102
 
97
103
  Scanner sc = new Scanner(System.in);
98
104
 
99
- int x= sc.nextInt();//目の和を入力
105
+ int n= sc.nextInt();//目の和を入力
100
106
 
101
- int[] dice={1,1,(x-2)};//サイコロ3つの配列
107
+ int[] dice={1,1,(n-2)};//サイコロ3つの配列
102
108
 
103
109
  double count=1;//何通りあるかのカウント
104
110
 

3

ジャンルの変更 アルゴリズムが間違えていたことのお知らせ

2019/12/06 16:19

投稿

hadake7616
hadake7616

スコア8

test CHANGED
File without changes
test CHANGED
@@ -6,13 +6,9 @@
6
6
 
7
7
  サイコロを3つ同時になげて目の和(x)になるのは何通りあるかのプログラムを書きました
8
8
 
9
- 入力された値をx 何通りあるかをcountにしました。
9
+ 入力された値をx 何通りあるかをcountにしました。がうまくいきません。
10
10
 
11
- サイコロ1-6まあり
11
+ xの範囲 3<=x<=18
12
-
13
- 和の最大数は18
14
-
15
- 和の最小値は3
16
12
 
17
13
  です
18
14
 
@@ -20,17 +16,59 @@
20
16
 
21
17
  例:x=3の時は(1,1,1)しかないのでcount=1
22
18
 
19
+ ### コードの説明
20
+
21
+ countは後で確率を出すときに使うかもしれないのでdouble型にしてます
23
22
 
24
23
 
25
24
 
25
+ 与えられたxをdice配列に格納する。
26
26
 
27
- 数はあってると思うですがソースコードで条件式・配列の要素数直書きしていてあまり良くない気がします。
27
+ dice[0]=1(1目)dice[1]=1(1の目)dice[2]=x-2した値初期値としていれる
28
28
 
29
+ dice[2]>6になるまで、dice[2]-=1 dice[1]=+1する
30
+
31
+ dice[2]=6かつdice[1]>6ならdice[0]=+1 dice[1]=+1として初期値を作る
32
+
33
+ ///数える///
34
+
35
+ ※ここがうまくいきません。
36
+
37
+ 例1
38
+
39
+ x=4のとき
40
+
41
+ [1,1,2]→[1,2,1]→[2,1,1] 3通り
42
+
43
+ 例2:
44
+
45
+ x=18のとき
46
+
47
+ [6,6,6] 1通り
48
+
49
+
50
+
51
+ ~~数はあってると思うのですが、あっていませんでした。ソースコードで、条件式・配列の要素数を直書きしていてあまり良くない気がします。
52
+
29
- 修正したほうがいいと思うのですが、どのように書いたらキレイに書けるのでしょうか。
53
+ 修正したほうがいいと思うのですが、どのように書いたらキレイに書けるのでしょうか。~~
30
54
 
31
55
  よろしくおねがいします。
32
56
 
57
+ ### 追記
33
58
 
59
+ 問題の説明文を修正しました。
60
+
61
+ xは3<=x<=18の範囲で入力されるものとします。
62
+
63
+
64
+
65
+ アルゴリズムがうまくいっていませんでしたので、修正案を教えていただけると助かります。
66
+
67
+
68
+
69
+ ~~サイコロを4つに増やしてたときに、修正箇所が少なくて済むようにしたいです。~~
70
+
71
+ まずは3つで動くようにしたいです。
34
72
 
35
73
 
36
74
 
@@ -84,7 +122,9 @@
84
122
 
85
123
  //通り数
86
124
 
87
- while (dice[1]>6| dice[2]>1){
125
+ while (dice[1]>6 || dice[2]>1){
126
+
127
+
88
128
 
89
129
  dice[2]-=1;
90
130
 

2

説明文を修正しました 日本語不自由で申し訳ありません。

2019/12/06 16:12

投稿

hadake7616
hadake7616

スコア8

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,25 @@
4
4
 
5
5
 
6
6
 
7
- サイコロを3つ同時になげて目の和何通りあるかのプログラムを書きました
7
+ サイコロを3つ同時になげて目の和(x)になるのは何通りあるかのプログラムを書きました
8
+
9
+ 入力された値をx 何通りあるかをcountにしました。
10
+
11
+ サイコロは各1-6まであり
12
+
13
+ 和の最大数は18
14
+
15
+ 和の最小値は3
16
+
17
+ です
18
+
19
+
20
+
21
+ 例:x=3の時は(1,1,1)しかないのでcount=1
22
+
23
+
24
+
25
+
8
26
 
9
27
  数はあってると思うのですが、ソースコードで、条件式・配列の要素数を直書きしていてあまり良くない気がします。
10
28
 

1

<code>表記に変更しました。失礼しました。

2019/12/06 15:28

投稿

hadake7616
hadake7616

スコア8

test CHANGED
File without changes
test CHANGED
@@ -25,6 +25,10 @@
25
25
 
26
26
 
27
27
  ### 該当のソースコード
28
+
29
+ ```java
30
+
31
+
28
32
 
29
33
  import java.util.*;
30
34
 
@@ -86,22 +90,16 @@
86
90
 
87
91
  }else count++;
88
92
 
89
-
90
-
91
-
92
-
93
93
  }
94
94
 
95
95
  }
96
96
 
97
97
  System.out.print(count);
98
98
 
99
-
99
+ }
100
100
 
101
-
101
+ }
102
102
 
103
103
 
104
104
 
105
- }
105
+ ```
106
-
107
- }