回答編集履歴

4

プログラム修正方法の一例を追加した。

2021/01/05 15:05

投稿

hidezzz
hidezzz

スコア1248

test CHANGED
@@ -1,4 +1,4 @@
1
- SHOMIさんの回答で良いと思います。読み違ってました。
1
+ SHOMIさんの回答で良いと思います。最初の回答は読み違ってました。
2
2
 
3
3
 
4
4
 
@@ -10,9 +10,99 @@
10
10
 
11
11
 
12
12
 
13
- ですかね。
14
13
 
14
+
15
+ A,B,Cに割り振る際に全兵力Zを引いていくような感じにするとわかりやすくなると思います。
16
+
15
- わかりやすい変数したほうが良いという点は変わらないです
17
+ ちょっと書き換えてみました。つでに変数名も変えてみました。
18
+
19
+
20
+
21
+ ```C
22
+
23
+ #include<stdio.h>
24
+
25
+ #include<stdlib.h>
26
+
27
+
28
+
29
+ int main(void){
30
+
31
+ int RemainPerson;
32
+
33
+ int APerson,BPerson,CPerson;
34
+
35
+
36
+
37
+ /* 残り人数(初期値は合計人数) */
38
+
39
+ RemainPerson=30000;
40
+
41
+
42
+
43
+ /* 兵力Aの入力 */
44
+
45
+ printf("%d人の兵力を割り振ってください。\n",RemainPerson);
46
+
47
+ printf("グーの兵力:"); scanf("%d", &APerson);
48
+
49
+ while (RemainPerson - APerson < 0) {
50
+
51
+ /* 残り兵力を越えてしまっている場合、正しい値が入力されるまでやり直す。*/
52
+
53
+ system("cls");
54
+
55
+ printf("兵は%d人しかいません。\n",RemainPerson);
56
+
57
+ printf("%d人の兵力を割り振ってください。\n",RemainPerson);
58
+
59
+ printf("グーの兵力:"); scanf("%d", &APerson);
60
+
61
+ }
62
+
63
+ /* 兵力Aを除いたものが残り人数となる。*/
64
+
65
+ RemainPerson -= APerson;
66
+
67
+
68
+
69
+ /* 兵力Bの入力 */
70
+
71
+ printf("残りの兵力は%dです。\n", RemainPerson);
72
+
73
+ printf("チョキの兵力:"); scanf("%d", &BPerson);
74
+
75
+ while (RemainPerson - BPerson < 0) {
76
+
77
+ /* 残り兵力を越えてしまっている場合、正しい値が入力されるまでやり直す。*/
78
+
79
+ system("cls");
80
+
81
+ printf("残りの兵は%d人しかいません。\n", RemainPerson);
82
+
83
+ printf("チョキの兵力:"); scanf("%d", &BPerson);
84
+
85
+ }
86
+
87
+ /* さらに兵力Bを除いたものが残り人数となる。*/
88
+
89
+ RemainPerson -= BPerson;
90
+
91
+
92
+
93
+ /* 兵力Cの決定(残り人数がそのまま兵力Cとなる。) */
94
+
95
+ CPerson = RemainPerson;
96
+
97
+ printf("パーの兵力:%d\n",CPerson);
98
+
99
+
100
+
101
+ return 0;
102
+
103
+ }
104
+
105
+ ```
16
106
 
17
107
 
18
108
 

3

書式修正。

2021/01/05 15:05

投稿

hidezzz
hidezzz

スコア1248

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- -- 以下間違い --
19
+ ↓↓ 以下最初に書いた間違い ↓↓
20
20
 
21
21
 
22
22
 

2

間違った回答をしてしまったので訂正した

2021/01/05 14:57

投稿

hidezzz
hidezzz

スコア1248

test CHANGED
@@ -1,3 +1,25 @@
1
+ SHOMIさんの回答で良いと思います。読み違ってました。
2
+
3
+
4
+
5
+ Z…全兵力
6
+
7
+ A,B,C…3つそれぞれの兵力
8
+
9
+ D…一時変数
10
+
11
+
12
+
13
+ ですかね。
14
+
15
+ わかりやすい変数にしたほうが良いという点は変わらないです。
16
+
17
+
18
+
19
+ -- 以下間違い --
20
+
21
+
22
+
1
23
  残り兵力を保持している変数は「Z」ではないでしょうか?
2
24
 
3
25
  「D」は一時的に使用される変数のようです。兵力がマイナスであるのかを判断するには「Z」を対象としなければいけないのではないでしょうか?

1

読み間違えてるかもという予防線の文言を追加した。

2021/01/05 14:20

投稿

hidezzz
hidezzz

スコア1248

test CHANGED
@@ -5,3 +5,5 @@
5
5
 
6
6
 
7
7
  あと、変数がAとかBとか英数字1文字だと読むのがつらいので、もっとわかりやすい変数名にすることをおすすめします。
8
+
9
+ (実際自分もリファクタリングせずにソースコードを見ているのでなんか読み間違っているような気がしています。)