回答編集履歴
3
修正すべき点を追記
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
再度修正
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
4種類の絵柄とそれぞれ13枚のカードが入り得る配列になっているか否か、です。
|
19
|
+
4種類の絵柄とそれぞれ13枚のカードが入り得る配列になっているか否か、です。
|
20
20
|
|
21
21
|
|
22
22
|
|
1
変?なコード部分の記述に合わせて修正
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`での初期化部分
|
23
|
+
NGのコードの方では最初の`false`での初期化部分で`bool cards[3][14]`に書き込みをし、領域外を破壊することとなり、初期化以降でも`cards[3][...]`相当の部分にアクセスする可能性があるので、実行時にエラー(ランタイムエラー)になってもおかしくないです。
|
24
24
|
|
25
25
|
|
26
26
|
|