/*
ヒットアンドブロー ゲーム
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
// 変数宣言
int a;
int e_a[4];
int rnd;
int e_rnd[4];
int hit;
int blow;
int i;
int n;
// 乱数生成
srand( (unsigned)time(NULL) );
rnd = rand() % 8999 + 1000;
// ループ
while (1) {
hit = 0;
blow = 0;
printf("4桁の数を入力してください[%d](ctrl+cで終了): ", rnd);
scanf("%d", &a);
// 入力した数値を分割
e_a[0] = a / 1000 % 10;
e_a[1] = a / 100 % 10;
e_a[2] = a / 10 % 10;
e_a[3] = a % 10;
// 入力した数値を分割
e_rnd[0] = rnd / 1000 % 10;
e_rnd[1] = rnd / 100 % 10;
e_rnd[2] = rnd / 10 % 10;
e_rnd[3] = rnd % 10;
// 正解ならループを抜ける
if (rnd == a) {
printf("数字が一致しました\n");
break;
}
// ブローを数える
for (i=0; i<4; i++) {
// ヒットを数える
if (e_a[i] == e_rnd[i]) {
hit++;
// ブローを数える
} else {
for (n=0; n<4; n++) {
if (e_a[i] == e_rnd[n]) {
blow++;
break;
}
}
}
}
// ヒット数とブロー数を表示
printf("Hit[%d] - Blow[%d]\n", hit, blow);
}
return 0;
}