回答編集履歴
3
追加
answer
CHANGED
@@ -20,4 +20,26 @@
|
|
20
20
|
} while(card != '\0');
|
21
21
|
printf("%c\n", i + P);
|
22
22
|
}
|
23
|
+
```
|
24
|
+
|
25
|
+
do-while は for に纏めれば小さくなりますね.
|
26
|
+
```c
|
27
|
+
#include <stdio.h>
|
28
|
+
|
29
|
+
#define N 3 /*人数*/
|
30
|
+
#define M 100 /*最大枚数*/
|
31
|
+
#define C 'a' /*カード(オフセット)*/
|
32
|
+
#define P 'A' /*参加者(オフセット)*/
|
33
|
+
|
34
|
+
int main(int argc, char *argv[]) {
|
35
|
+
int i, top[N]={0};
|
36
|
+
char card, S[N][M+1];
|
37
|
+
//入力
|
38
|
+
for(i=0;i<N;i++) scanf("%s", S[i]);
|
39
|
+
//勝負
|
40
|
+
for(card=C; card!='\0'; card=S[i][top[i]++]) i = card - C;
|
41
|
+
//出力
|
42
|
+
printf("%c\n", i + P);
|
43
|
+
}
|
44
|
+
|
23
45
|
```
|
2
コードを読み易く(?)
answer
CHANGED
@@ -2,19 +2,22 @@
|
|
2
2
|
```c
|
3
3
|
#include <stdio.h>
|
4
4
|
|
5
|
+
#define N 3 /*人数*/
|
6
|
+
#define M 100 /*最大枚数*/
|
7
|
+
#define C 'a' /*カード(オフセット)*/
|
8
|
+
#define P 'A' /*参加者(オフセット)*/
|
9
|
+
|
5
10
|
int main(int argc, char *argv[]) {
|
6
|
-
int i,
|
11
|
+
int i, top[N]={0};
|
7
|
-
char
|
12
|
+
char card, S[N][M+1];
|
8
13
|
|
9
|
-
scanf("%s", S[
|
14
|
+
for(i=0;i<N;i++) scanf("%s", S[i]);
|
10
|
-
scanf("%s", S[1]);
|
11
|
-
scanf("%s", S[2]);
|
12
15
|
|
13
|
-
|
16
|
+
card = C;
|
14
17
|
do {
|
15
|
-
i =
|
18
|
+
i = card - C;
|
16
|
-
|
19
|
+
card = S[i][top[i]++];
|
17
|
-
} while(
|
20
|
+
} while(card != '\0');
|
18
|
-
printf("%c\n", i+
|
21
|
+
printf("%c\n", i + P);
|
19
22
|
}
|
20
23
|
```
|
1
char 変数があったほうが分かり易い?
answer
CHANGED
@@ -3,18 +3,18 @@
|
|
3
3
|
#include <stdio.h>
|
4
4
|
|
5
5
|
int main(int argc, char *argv[]) {
|
6
|
+
int i, n[3]={0};
|
6
|
-
char S[3][101];
|
7
|
+
char c, S[3][101];
|
7
|
-
int n[3] = {0};
|
8
8
|
|
9
9
|
scanf("%s", S[0]);
|
10
10
|
scanf("%s", S[1]);
|
11
11
|
scanf("%s", S[2]);
|
12
12
|
|
13
|
-
|
13
|
+
c = 'a';
|
14
14
|
do {
|
15
|
-
i = j;
|
16
|
-
|
15
|
+
i = c - 'a';
|
16
|
+
c = S[i][n[i]++];
|
17
|
-
} while(
|
17
|
+
} while(c != '\0');
|
18
18
|
printf("%c\n", i+'A');
|
19
19
|
}
|
20
20
|
```
|