回答編集履歴

3

修正すべき点を追記

2020/03/09 16:40

投稿

dodox86
dodox86

スコア9256

test CHANGED
@@ -43,3 +43,51 @@
43
43
  ...
44
44
 
45
45
  ```
46
+
47
+ ---
48
+
49
+ **追記しました:**
50
+
51
+
52
+
53
+ OKのコードについても初期化の部分で配列の範囲外`cards[3][14]`にアクセスしているので、最悪、実行時エラーが起きてもおかしくないです。正しくは以下のように修正すべきでしょう。
54
+
55
+
56
+
57
+ ```C++
58
+
59
+ bool cards[4][14];
60
+
61
+ char a;
62
+
63
+ ...
64
+
65
+ // 初期化の部分
66
+
67
+ for(int i = 0; i < 4; i++){
68
+
69
+ // 「足りないカードを出力する部分」のやり方に沿ったループ(cards[i][0]は使わない)
70
+
71
+ // 元のコード for(int j = 0; j < 15; j++){
72
+
73
+ for(int j = 1; j <= 13; j++){
74
+
75
+ cards[i][j] = false;
76
+
77
+ }
78
+
79
+ }
80
+
81
+
82
+
83
+ // 足りないカードを出力する部分
84
+
85
+ for(int i = 0; i < 4; i++){
86
+
87
+ for(int j = 1; j<= 13; j++){
88
+
89
+
90
+
91
+ ...
92
+
93
+ ```

2

再度修正

2020/03/09 16:40

投稿

dodox86
dodox86

スコア9256

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- 4種類の絵柄とそれぞれ13枚のカードが入り得る配列になっているか否か、です。(OKの方は1つの絵柄につき1枚余分な気がしますが、大勢に影響は無いです)
19
+ 4種類の絵柄とそれぞれ13枚のカードが入り得る配列になっているか否か、です。
20
20
 
21
21
 
22
22
 

1

変?なコード部分の記述に合わせて修正

2020/03/09 14:24

投稿

dodox86
dodox86

スコア9256

test CHANGED
@@ -16,11 +16,11 @@
16
16
 
17
17
 
18
18
 
19
- 4種類の絵柄とそれぞれ13枚のカードに正しく対応した配列になっているか否か、です。
19
+ 4種類の絵柄とそれぞれ13枚のカードが入り得る配列になっているか否か、です。(OKの方は1つの絵柄につき1枚余分な気がしますが、大勢に影響は無いです)
20
20
 
21
21
 
22
22
 
23
- NGのコードの方では最初の`false`での初期化部分などで`bool cards[3][14]`に書き込みをし、領域外を破壊することとなり、実行時にエラー(ランタイムエラー)になってもおかしくないです。
23
+ NGのコードの方では最初の`false`での初期化部分で`bool cards[3][14]`に書き込みをし、領域外を破壊することとなり、初期化以降でも`cards[3][...]`相当の部分にアクセスする可能性があるので、実行時にエラー(ランタイムエラー)になってもおかしくないです。
24
24
 
25
25
 
26
26