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

回答編集履歴

1

ソース追記

2019/02/25 10:20

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -1,52 +1,84 @@
1
- 回答はありません。結果だけw
1
+ BAが出たようなの・・・
2
- ```text
2
+ ```c
3
+ #include <stdio.h>
4
+ #include <stdlib.h>
5
+ //
6
+ //0〜9の乱数を発生させる。
7
+ int rand_n(void);
8
+ //入力された数字とコンピュータが出した数字を比較して点数を返す。
9
+ int guess(int);
10
+ //
11
+ /*************************************
12
+ *************************************/
13
+ //
14
+ int rand_n(void) { return rand() % 10; }
15
+ //
3
- guess NUMBER
16
+ int guess(int f)
17
+ {
18
+ static int cnt = 1;
19
+ static const int point[] = {
4
- 0~9の数字がランダムに表示されるの
20
+ // 10回ぐらいプレイヤーが勝つ
21
+ // 400, 300, 250, 150, 100, 50, -10, -20, -30, -50
5
- どの数字が表示されるか予測してくださ
22
+ // 30回ぐらでプレイヤーが勝つ
23
+ 200, 100, 50, 25, 10, 0, -25, -50, -100, -200
6
24
 
25
+ };
26
+ int g;
27
+ char buf[32];
28
+
29
+ printf("Stage%d: Yor point is %d\n", cnt, f);
30
+ puts("数字を予測してください。");
31
+ //
32
+ fgets(buf, sizeof buf, stdin);
33
+ sscanf(buf, "%d", &g);
34
+ // 緊急脱出用^^;
35
+ if (0 > g || g > 9) {
36
+ puts("quit!");
37
+ exit(1);
38
+ }
39
+ //
40
+ printf("Selected number is %d\n\n", g);
41
+ //
42
+ int p = abs(rand_n() - g); // abs()は結果が負になった時の対策
43
+ // for DEBUG
44
+ if (p == 0) {
45
+ puts("equal");
46
+ }
47
+ // printf("%d\n", p);
48
+ //
49
+ f += point[p];
50
+ //
51
+ cnt++;
52
+ //
53
+ return f;
54
+ }
55
+
56
+ int main(void)
57
+ {
58
+ puts("guess NUMBER");
59
+
60
+ puts("0~9の数字がランダムに選択されるので、\n"
61
+ "選択された数字を当ててください。\n");
62
+
7
- You have 50 points
63
+ puts("You have 50 points\n");
64
+
65
+ int f = 50;
66
+ do{
67
+ f = guess(f);
68
+ }while (f > 0 && f < 1000);
69
+
8
- 数字を予測してください。
70
+ //
9
- 1
10
- Selected number is 1
71
+ if (f <= 0) {
11
- 2
12
- 1st stage: Yor point is 300
72
+ puts("your loss ;-p");
13
- 数字を予測してください。
73
+ } else {
14
- 1
15
- Selected number is 1
16
- 5
17
- 2st stage: Yor point is 350
18
- 数字を予測してください。
19
- 1
20
- Selected number is 1
21
- 6
22
- 3st stage: Yor point is 340
23
- 数字を予測してください。
24
- 1
25
- Selected number is 1
26
- 4
27
- 4st stage: Yor point is 440
28
- 数字を予測してください。
29
- 1
30
- Selected number is 1
31
- 2
32
- 5st stage: Yor point is 690
33
- 数字を予測してください。
34
- 1
35
- Selected number is 1
36
- 4
37
- 6st stage: Yor point is 790
38
- 数字を予測してください。
39
- 1
40
- Selected number is 1
41
- 5
42
- 7st stage: Yor point is 840
43
- 数字を予測してください。
44
- 1
45
- Selected number is 1
46
- 1
47
- 8st stage: Yor point is 1140
74
+ puts("Your wins v^^");
75
+ }
48
- Your wins v^^
76
+ //
49
- Quit this game!
77
+ puts("Quit this game!");
78
+
79
+ return 0;
80
+ }
81
+
50
82
  ```
83
+  一応動作確認はしていますが、分かるでしょうか?
51
- (デバッグ情報てますが)何が起っているか分かりますか?
84
+ 何かいい変数名ないかと考えたのですがまとしま
52
- あと、よっぽどかけ離れた数値を連続して指定しないと、これ勝てますよ、意図した結果ならいいのですが。