|
サンプルコードmain
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ANSWER_SIZE 4 /*答えの桁数*/
#define TRY_MAX 12 /*答えることのできる回数。*/
void initialize(void);
int randN(int n);
void shuffle(int *array, int size);
void setAnser(int *array, int size);
int main(void)
{
int try_cnt, hit, blow;
int ans[ANSWER_SIZE];
char guess[ANSWER_SIZE];
int i, j;
/* 初期化 */
initialize();
/* 正解をセット */
setAnser(ans, ANSWER_SIZE);
for (try_cnt = 1; try_cnt <= TRY_MAX; try_cnt++){
/* キーボードから4桁の数を入力 */
printf("\n%d回目 --> ", try_cnt);
scanf("%s", guess);
/* hitとblowの数を数える */
hit = blow = 0;
for (i = 0; i < ANSWER_SIZE; ++i) {
if (ans[i] == guess[i] - '0') {
hit++;
}
}
for (i = 0; i < ANSWER_SIZE; ++i) {
for (j = 0; j < ANSWER_SIZE; ++j) {
if (ans[i] == guess[j] - '0'){
blow++;
break;
}
}
}
/* hitとblowの数を表示 */
printf("hit = %d blow = %d", hit ,blow);
/* 正解なら繰り返しを終了 */
if ( hit == ANSWER_SIZE)
break;
}
/* 正解ならばALL HITと表示。TRY_MAX回以内で正解が入力されなかったら、正解を表示する。 */
if (try_cnt < TRY_MAX) {
printf("ALL HIT !! %d回目\n", try_cnt);
} else {
printf("正解は[%d%d%d%d]でした\n", ans[0], ans[1], ans[2], ans[3]);
}
return 0;
}
|