옜날에 해논건데 보니깐 잇네 수정해서 쓰던가 하세욤
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
/* BOOL Type 정의 */
typedef int BOOL;
#define FALSE 0
#define TRUE 1
#define LIMIT 10
/* Element struct 정의 */
typedef struct tagElement
{
int Location; // 위치
char Number; // 숫자
}Element;
int main()
{
int i,j;
int count = LIMIT; // 입력 제한 횟수
char buf [MAX]; // 정답
char Input [MAX]; // 사용자 입력 답안
Element Solution [MAX]; // 정답
Element Challenge[20][MAX]; // 사용자 입력 답안 리스트
BOOL L_chk, N_chk; // 자리,숫자 체크변수( Location check, Number check )
int Ball, Strike; // 볼, 스트라이크
int breakpt; // 정답을 맞춘 시점
FILE* fp;
/* file read */
fp = fopen(\"baseball.txt\",\"r\");
if( NULL == fp )
{
puts(\"file open error!\");
return -1;
}
fgets( buf, sizeof( buf ), fp );
for ( i = 0; i < MAX; i++ )
{
Solution[i].Number = buf[i]; // 숫자 저장
Solution[i].Location = i; // 위치 저장 ( 0부터 )
}
/* game start */
while( count > 0 ) // count 20 to 1
{
Ball = 0;
Strike = 0;
printf(\"Input five numbers :\");
scanf(\"%s\", Input);
for ( i = 0; i < MAX; i++ )
{
Challenge[count-1][i].Number = Input[i]; // 숫자 저장
Challenge[count-1][i].Location = i; // 위치 저장 ( 0부터 )
}
for ( i = 0; i < MAX; i++ )
{
L_chk = FALSE;
N_chk = FALSE;
for( j = 0; j < 5; j++ )
{
if ( Challenge[count-1][i].Number == Solution[j].Number ) // 해당 숫자가 있는가?
{
N_chk = TRUE;
if( Challenge[count-1][i].Location == Solution[j].Location) // 위치도 일치하는가?
{
L_chk = TRUE;
}
}
}
if( N_chk == TRUE && L_chk == TRUE ) // 숫자와 위치가 모두 일치하면
Strike++; // Strike 증가
else if( N_chk == TRUE ) // 숫자만 존재하면
Ball++; // Ball 증가
}
printf(\"%d ball, %d strike! \\n\", Ball, Strike ); // 볼, 스트라이크 출력
if( Strike >= 5 ) // strike 가 5이상이면
{
puts(\"Right!!!\");
breakpt = count; // 정답 맞춘 시점 저장
break;
}
count--; // 입력기회 1 감소
}
if( count <= 1) // 못 맞췄다면
{
puts(\"You are failed...\");
puts(\"↓Your input history...↓\");
for( i = LIMIT-1; i > 0; i-- )
{
for( j = 0; j < 5; j++ )
{
if( Challenge[i][j].Number == \'\\0\')
break;
putchar(Challenge[i][j].Number);
}
putchar(\'\\n\');
}
}
else // 맞췄다면
{
puts(\"↓Your input history...↓\");
for( i = LIMIT-1; i > breakpt-2; i-- )
{
for( j = 0; j < 5; j++ )
{
if( Challenge[i][j].Number == \'\\0\')
break;
putchar(Challenge[i][j].Number);
}
putchar(\'\\n\');
}
}
return 0;
}
댓글 0