回答編集履歴

3

continue をやめて if ~ elseif ~

2018/04/11 06:19

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -38,11 +38,7 @@
38
38
 
39
39
  F = F + 1; // フレームを一つ進める
40
40
 
41
- continue;
42
-
43
- }
44
-
45
- if (T == 2 && a[n]+a[n-1] == 10) { /* スペア = フレーム内の2投目で、1投目と合わせて10本倒し */
41
+ } else if (T == 2 && a[n]+a[n-1] == 10) { /* スペア = フレーム内の2投目で、1投目と合わせて10本倒し */
46
42
 
47
43
  S = S + a[n+1]; // 後ろ1投分を加算する
48
44
 
@@ -50,17 +46,17 @@
50
46
 
51
47
  T = 1;
52
48
 
53
- continue;
49
+ } else {
54
50
 
55
- }
51
+ T = T + 1;
56
52
 
57
- T = T + 1;
53
+ if (T >= 3) { // 1フレーム2投までなので、次のフレームに移る
58
54
 
59
- if (T >= 3) { // 1フレーム2投までなので、次のフレームに移る
55
+ F = F + 1;
60
56
 
61
- F = F + 1;
57
+ T = 1;
62
58
 
63
- T = 1;
59
+ }
64
60
 
65
61
  }
66
62
 

2

計算アルゴリズムを記述

2018/04/11 06:19

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -7,3 +7,71 @@
7
7
  ```
8
8
 
9
9
  ですから、1フレームがストライクだった時、この条件を満たさないので加算されていないのでは。
10
+
11
+
12
+
13
+ ボウリングのスコアは1フレーム目から順番に計算していくしかないので、手順を大きく組み替える必要があると思います。
14
+
15
+ 私は Python だとちょっとわからないので、ざっくり書いてみます。
16
+
17
+ ```
18
+
19
+ var S = 0; /* トータルスコア */
20
+
21
+ var F = 1; /* フレーム */
22
+
23
+ var T = 1; /* フレーム内投球回 */
24
+
25
+
26
+
27
+ /* 投球による倒したピンの数が、a[] に入っている */
28
+
29
+ for(n = 0; n < a.length-1; n++) {
30
+
31
+ S = S + a[n];
32
+
33
+ if (F != 10) {
34
+
35
+ if (T == 1 && a[n] == 10) { /* ストライク = フレーム内の1投目で10本倒し */
36
+
37
+ S = S + a[n+1] + a[n+2]; // 後ろ2投分を加算する
38
+
39
+ F = F + 1; // フレームを一つ進める
40
+
41
+ continue;
42
+
43
+ }
44
+
45
+ if (T == 2 && a[n]+a[n-1] == 10) { /* スペア = フレーム内の2投目で、1投目と合わせて10本倒し */
46
+
47
+ S = S + a[n+1]; // 後ろ1投分を加算する
48
+
49
+ F = F + 1;
50
+
51
+ T = 1;
52
+
53
+ continue;
54
+
55
+ }
56
+
57
+ T = T + 1;
58
+
59
+ if (T >= 3) { // 1フレーム2投までなので、次のフレームに移る
60
+
61
+ F = F + 1;
62
+
63
+ T = 1;
64
+
65
+ }
66
+
67
+ } else {
68
+
69
+ /* 10フレームはボーナス加算なしなのでそのまま継続 */
70
+
71
+ T = T + 1;
72
+
73
+ }
74
+
75
+ }
76
+
77
+ ```

1

文言修正

2018/04/11 03:31

投稿

tacsheaven
tacsheaven

スコア13703

test CHANGED
@@ -6,4 +6,4 @@
6
6
 
7
7
  ```
8
8
 
9
- ですから、1投目がストライクだった時、この条件を満たさないので加算されていないのでは。
9
+ ですから、1フレームがストライクだった時、この条件を満たさないので加算されていないのでは。