Page 280 고등학교 프로그래밍 교과서
P. 280
정답 및 해설
STEP 4 구현 및 테스트 번 시도할 때마다 tries 변수의 값을 1씩 증가시키고 숫자 3개의 값과 위치가
모두 일치하면 저장된 tries 값을 반환한다.
gtBalls.h
#include
#include
void gtBalls(int tBalls[ ]) { void wRecord(char name[ ], int tries) {
srand((unsigned)time(NULL)); FILE *fp;
do fp = fopen("record.txt", "a");
{ fprintf(fp, "%s %d\n", name, tries);
tBalls[0]=rand( )%10; fclose(fp);
tBalls[1]=rand( )%10; }
tBalls[2]=rand( )%10;
}while(tBalls [0]= =tBalls[1]||tBalls[0]= =tBalls[2]||tBalls[1]= = [해설] wRecord.h 파일에는 wRecord 함수가 포함되어 있다. 이 함수는 반환
tBalls[2]);
형은 없으며 매개 변수로는 문자형 배열 변수 한 개와 정수형 변수 한 개를
}
받는다.
함수의 기능은 record.txt 파일을 추가 모드로 열어서(읽기 전용으로 열면 기
[해설] gtBalls.h 파일은 gtBalls 함수를 가지고 있다. 이 함수는 반환형은 없으
존 기록이 모두 지워진다.) 매개 변수로 입력받은 문자열과 정숫값을 기록한
며 매개 변수로 정수형 배열 tBalls를 받는다. 이 함수는 받은 정수형 배열에
다. 문자열은 사용자의 이름이고 정수는 그 사용자가 시도한 횟수이다. 이때
0에서 9사이의 정수를 입력하는 기능을 가진다.
이름과 시도 횟수를 한 줄에 기록하기 위해 fprintf 함수를 사용한다.
hitBalls.h -rRecord.h
#include
int hitBalls(int tBalls[ ]){ void rRecord( ) {
int gBalls[3]; FILE *fp;
int a, strike=0, ball=0; char name[10];
int tries=0; int tries;
while(strike < 3) fp = fopen("record.txt", "r");
{ while(fscanf(fp, "%s %d\n", name, &tries) != EOF) {
printf("%s %d\n", name, tries);
strike = ball = 0;
}
printf("숫자 3개를 입력하세요:");
fclose(fp);
scanf("%d %d %d",&gBalls[0],&gBalls[1],&gBalls[2]);
}
for(a=0; a<3; a++)
{
[해설] rRecord.h 파일은 rRecord 함수를 가지고 있다. 이 함수는 반환값도
if(gBalls[a] = = tBalls[a])
없으며 매개 변수도 없다. 이 함수의 기능은 간단하다. 이 함수가 호출되면
strike++;
record.txt에 있는 값을 한 줄씩 파일이 끝날 때까지 읽어 화면에 출력해 준
else if(gBalls [a]= =tBalls[0] || gBalls[a]= =tBalls[1] ||
다. record.txt 저장된 값은 fprintf 함수를 이용하여 문자열과 정수, 즉 이름과
gBalls[a]= =tBalls[2] )
시도 횟수를 한 줄에 기록하였으므로 해당 값을 읽을 때도 형식 지정 함수인
ball++;
} fscanf 함수를 이용하여 형식에 맞추어 파일을 읽어 준다.
printf("%d 스트라이크 %d 볼\n",strike,ball);
tries++;
printf("%d", tries);
}
printf("게임이 끝났습니다.\n");
return tries;
}
[해설] hitBalls.h 파일은 hitBalls 함수를 가지고 있다. 이 함수의 반환형은 정
수이며 매개 변수로 정수형 배열 하나를 받는다. 이 함수의 기능은 반복문을
이용하여 사용자로부터 숫자 3개를 입력받고 그 받은 값은 배열에 저장한 다
음 매개 변수로 받은 배열에 들어 있는 값과 비교하여 입력받은 숫자가 매개
변수로 받은 배열에 있으나 그 위치가 다르면 볼, 위치까지 같으면 스트라이
크를 출력해 준다. 숫자 3개의 값과 위치가 모두 일치할 때까지 반복한다. 한
278 부록
(책)2015프로그래밍-교과서3차심의본 본문.indb 278 2017-09-05 오후 4:17:13