#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define TRY_MAX 5
#define NUM_MAX 500
/*
* <解法>
* 回答回数の上限を定義する`TRY_MAX`と数の上限を定義する`NUM_MAX`をdefineを用いて定義することで容易に変更しやすくしている。
* 新たに`cnt`変数を用意することで回答回数を保存し、プレイヤーに質問する箇所で残りの回答回数を表示している。
* 回答ループの条件式に`cnt`を用いた式を追加することで、回答が一致した場合ないしは回答回数が上限突破したときにループを抜けるようにしている。
* ループ後の処理は、どちらが要因でループを抜けたかを判断するために条件式で分岐させている。
* ゲームオーバーの場合は答えを表示し終了する。
*/
int main(void)
{
srand((unsigned int)time(NULL));
int ans = rand() % NUM_MAX;
int cnt = 0;
int res;
printf("0~%dの整数を当てよう!!\n\n", NUM_MAX - 1);
do
{
printf("いくつかな?(残り回数%d):", TRY_MAX - cnt);
scanf("%d", &res);
cnt++;
if (res > ans)
printf("もっと小さいです!\n");
if (res < ans)
printf("もっと大きいです!\n");
} while (res != ans && cnt < TRY_MAX);
if (cnt >= TRY_MAX)
{
printf("ゲームオーバー!\n答えは%dです!", ans);
}
else
{
printf("正解です!\n");
}
return 0;
}