回答編集履歴
3
修正すべき点を追記
answer
CHANGED
@@ -20,4 +20,28 @@
|
|
20
20
|
}
|
21
21
|
}
|
22
22
|
...
|
23
|
+
```
|
24
|
+
---
|
25
|
+
**追記しました:**
|
26
|
+
|
27
|
+
OKのコードについても初期化の部分で配列の範囲外`cards[3][14]`にアクセスしているので、最悪、実行時エラーが起きてもおかしくないです。正しくは以下のように修正すべきでしょう。
|
28
|
+
|
29
|
+
```C++
|
30
|
+
bool cards[4][14];
|
31
|
+
char a;
|
32
|
+
...
|
33
|
+
// 初期化の部分
|
34
|
+
for(int i = 0; i < 4; i++){
|
35
|
+
// 「足りないカードを出力する部分」のやり方に沿ったループ(cards[i][0]は使わない)
|
36
|
+
// 元のコード for(int j = 0; j < 15; j++){
|
37
|
+
for(int j = 1; j <= 13; j++){
|
38
|
+
cards[i][j] = false;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
// 足りないカードを出力する部分
|
43
|
+
for(int i = 0; i < 4; i++){
|
44
|
+
for(int j = 1; j<= 13; j++){
|
45
|
+
|
46
|
+
...
|
23
47
|
```
|
2
再度修正
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
> bool cards[3][13];
|
8
8
|
```
|
9
9
|
|
10
|
-
4種類の絵柄とそれぞれ13枚のカードが入り得る配列になっているか否か、です。
|
10
|
+
4種類の絵柄とそれぞれ13枚のカードが入り得る配列になっているか否か、です。
|
11
11
|
|
12
12
|
NGのコードの方では最初の`false`での初期化部分で`bool cards[3][14]`に書き込みをし、領域外を破壊することとなり、初期化以降でも`cards[3][...]`相当の部分にアクセスする可能性があるので、実行時にエラー(ランタイムエラー)になってもおかしくないです。
|
13
13
|
|
1
変?なコード部分の記述に合わせて修正
answer
CHANGED
@@ -7,9 +7,9 @@
|
|
7
7
|
> bool cards[3][13];
|
8
8
|
```
|
9
9
|
|
10
|
-
4種類の絵柄とそれぞれ13枚のカード
|
10
|
+
4種類の絵柄とそれぞれ13枚のカードが入り得る配列になっているか否か、です。(OKの方は1つの絵柄につき1枚余分な気がしますが、大勢に影響は無いです)
|
11
11
|
|
12
|
-
NGのコードの方では最初の`false`での初期化部分
|
12
|
+
NGのコードの方では最初の`false`での初期化部分で`bool cards[3][14]`に書き込みをし、領域外を破壊することとなり、初期化以降でも`cards[3][...]`相当の部分にアクセスする可能性があるので、実行時にエラー(ランタイムエラー)になってもおかしくないです。
|
13
13
|
|
14
14
|
```C++
|
15
15
|
...
|