teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

回答を受けての訂正

2018/04/29 00:58

投稿

mMs7ScOiWNZzOie
mMs7ScOiWNZzOie

スコア14

title CHANGED
File without changes
body CHANGED
@@ -17,96 +17,15 @@
17
17
  ### 発生している問題・エラーメッセージ
18
18
 
19
19
  ```
20
- Aに3,Bに2を入力するとGame inputが二回表示されてしまいます。while文の閉まり方がおかしいのですか?このプログラム自体に自信がないので詳しく教えてください。
21
- ```
22
20
 
23
- ### 該当のソースコード
24
-
25
- `#define _CRT_SECURE_NO_WARNINGS
26
- #include <stdio.h>
27
-
28
-
29
- int main(void) {
30
-
31
- int a;
32
- int b;
33
-
34
- while (1) {
35
- /*グーチョキパーの手を入れる*/
36
- printf("Game input: ");
37
- scanf("%d %d", &a, &b);
38
-
39
- if ((a==1 || a==2 || a==3) && (b==1 || b==2 || b==3)) {
40
- break;
41
- }
42
-
43
-
44
- /*1,2,3以外は受け付けない*/
45
- printf("Invalid input (Rock: 1, Scissors: 2, Paper: 3),please try again:");
46
-
47
21
  }
48
-
49
-
50
- switch (a) {
51
- case 1:
52
- printf("A: Rock,");
53
- break;
54
-
55
- case 2:
56
- printf("A: Scissors,");
57
- break;
58
-
59
- case 3:
60
- printf("A: Paper,");
61
- break;
62
- }
63
- switch (b) {
64
- case 1:
65
- printf(" B: Rock;");
66
- break;
67
-
68
- case 2:
69
- printf(" B: Scissors;");
70
- break;
71
-
72
- case 3:
73
- printf(" B: Paper;");
74
- break;
75
- }
76
-
77
- if (a == b) {
78
- printf("Draw (points: A 0, B 0)\n");
79
- }
80
-
81
- else if (a == 1 && b == 2) {
82
- printf(" A wins and gets 1 points.\n");
83
- printf("Winner: A (points: A 1, B 0)\n");
84
- }
85
22
  else if (a == 2 && b == 3) {
86
- printf(" A wins and gets 2 points.\n");
87
- printf("Winner: A (points: A 2, B 0)\n");
88
- }
89
- else if (a == 3 && b == 1) {
90
- printf(" A wins and gets 5 points.\n");
91
- printf("Winner: A (points: A 5, B 0)\n");
92
- }
93
-
94
- else if (a == 1 && b == 2) {
95
- printf(" B wins and gets 1 points.\n");
96
- printf("Winner: A (points: A 0, B 1)\n");
97
- }
98
- else if (a == 2 && b == 3) {
99
23
  printf(" B wins and gets 2 points.\n");
100
24
  printf("Winner: A (points: A 0, B 2)\n");
101
25
  }
102
26
  else if (a == 3 && b == 1) {
103
27
  printf(" B wins and gets 5 points.\n");
104
28
  printf("Winner: A (points: A 0, B 5)\n");
105
- }
106
-
107
-
108
- return(0);
109
- }
110
29
  ``
111
30
 
112
31
  ```

1

一回目の質問に対しての回答を受けて変更しました。

2018/04/29 00:58

投稿

mMs7ScOiWNZzOie
mMs7ScOiWNZzOie

スコア14

title CHANGED
File without changes
body CHANGED
@@ -22,8 +22,7 @@
22
22
 
23
23
  ### 該当のソースコード
24
24
 
25
- ```
26
- #define _CRT_SECURE_NO_WARNINGS
25
+ `#define _CRT_SECURE_NO_WARNINGS
27
26
  #include <stdio.h>
28
27
 
29
28
 
@@ -32,66 +31,83 @@
32
31
  int a;
33
32
  int b;
34
33
 
35
-
36
34
  while (1) {
37
35
  /*グーチョキパーの手を入れる*/
38
36
  printf("Game input: ");
39
- scanf("%d", &a);
40
- scanf(" %d", &b);
37
+ scanf("%d %d", &a, &b);
41
- /*1,2,3以外は受け付けない*/
38
+
42
- if (a < 1 || a>3 || b < 1 || b>3) {
39
+ if ((a==1 || a==2 || a==3) && (b==1 || b==2 || b==3)) {
43
- printf("Invalid input (Rock: 1, Scissors: 2, Paper: 3),please try again:");
44
40
  break;
45
41
  }
46
42
 
43
+
44
+ /*1,2,3以外は受け付けない*/
45
+ printf("Invalid input (Rock: 1, Scissors: 2, Paper: 3),please try again:");
46
+
47
47
  }
48
- switch (a) {
49
- case 1:
50
- printf("A: Paper,");
51
- break;
52
48
 
53
- case 2:
54
- printf("A: Scissors,");
55
- break;
56
49
 
50
+ switch (a) {
57
- case 3:
51
+ case 1:
58
- printf("A: Paper,");
52
+ printf("A: Rock,");
59
- break;
53
+ break;
60
- }
61
- switch (b) {
62
- case 1:
63
- printf(" B: Paper;");
64
- break;
65
54
 
66
- case 2:
55
+ case 2:
67
- printf(" B: Scissors;");
56
+ printf("A: Scissors,");
68
- break;
57
+ break;
69
58
 
70
- case 3:
59
+ case 3:
71
- printf(" B: Paper;");
60
+ printf("A: Paper,");
72
- break;
61
+ break;
73
- }
62
+ }
63
+ switch (b) {
64
+ case 1:
65
+ printf(" B: Rock;");
66
+ break;
74
67
 
68
+ case 2:
69
+ printf(" B: Scissors;");
70
+ break;
75
71
 
76
- if (a == b) {
72
+ case 3:
77
- printf("Draw (points: A)\n");
73
+ printf(" B: Paper;");
78
-
74
+ break;
79
- }
75
+ }
80
- else if ((a == 1 && b == 2) || (a == 2 && b == 3) || (a == 3 && b == 1)) {
81
- printf("Winner: A (points:");
82
-
83
- }
84
- else if ((a == 1 && b == 2) || (a == 2 && b == 3) || (a == 3 && b == 1)) {
85
- printf("Winner: B (points:");
86
-
87
- }
88
76
 
77
+ if (a == b) {
78
+ printf("Draw (points: A 0, B 0)\n");
79
+ }
89
80
 
81
+ else if (a == 1 && b == 2) {
82
+ printf(" A wins and gets 1 points.\n");
83
+ printf("Winner: A (points: A 1, B 0)\n");
84
+ }
85
+ else if (a == 2 && b == 3) {
86
+ printf(" A wins and gets 2 points.\n");
87
+ printf("Winner: A (points: A 2, B 0)\n");
88
+ }
89
+ else if (a == 3 && b == 1) {
90
+ printf(" A wins and gets 5 points.\n");
91
+ printf("Winner: A (points: A 5, B 0)\n");
92
+ }
90
93
 
94
+ else if (a == 1 && b == 2) {
95
+ printf(" B wins and gets 1 points.\n");
96
+ printf("Winner: A (points: A 0, B 1)\n");
97
+ }
98
+ else if (a == 2 && b == 3) {
99
+ printf(" B wins and gets 2 points.\n");
100
+ printf("Winner: A (points: A 0, B 2)\n");
101
+ }
102
+ else if (a == 3 && b == 1) {
103
+ printf(" B wins and gets 5 points.\n");
104
+ printf("Winner: A (points: A 0, B 5)\n");
105
+ }
91
106
 
92
107
 
93
108
  return(0);
94
109
  }
110
+ ``
95
111
 
96
112
  ```
97
113