Page 279 고등학교 프로그래밍 교과서
P. 279
기존 게임 파일에 저장된 사용자 이름과 시도 횟 • 이 함수는 wRecord.h화일에 저장한다.
3 필수 • 이 함수는 반환형은 없으며 매개 변수로는 문자
기록 보기 수를 읽어서 화면에 출력한다.
형 배열 변수 한 개와 정수형 변수 한 개를 받
게임 기록 사용자 이름과 성공할 때까지의 시도 는다.
4 필수
저장하기 횟수를 파일에 저장한다. • 함수의 기능은 record.txt 파일을 추가 모드로 열
어서 (읽기 전용으로 열면 기존 기록이 모두 지
사용자가 맞추어야 할 0에서 9까지 난 워진다.) 매개 변수로 입력받은 문자열과 정수 값
난수로 0에서
수를 중복없이 3개 생성한다. 생성된 을 기록한다. 문자열은 사용자의 이름이고 정수
5 9 사이 숫자 필수 3 는 그 사용자가 시도한 횟수이다. 이때 이름과 필수
난수는 게임이 끝날 때까지 유지되도록
3개 만들기 시도 횟수를 한 줄에 기록하기 위해 fprintf 함수
한다. 를 사용한다.
생성된 난수 3개와 사용자가 입력한 숫
void wRecord(char name[], int tries) {
입력받은 숫자와 자 3개를 순서대로 비교하여 값과 위치 // record.txt 파일을 열어 이름, 시도 횟수 형태
6 3개의 난수 가 모두 맞으면 스트라이크 값만 있고 필수 로 형식을 출력한다.
}
비교하기 위치가 다르면 볼이라고 화면에 출력해
• rRecord.h 파일에 이 함수를 저장한다.
준다.
• 이 함수는 반환값도 없으며 매개 변수도 없다.
• record.txt에 있는 값을 한 줄씩 파일이 끝날 때
까지 읽어 화면에 출력해 준다. record.txt 저장
STEP 3 상세 설계 된 값은 fprintf 함수를 이용하여 문자열과 정수
즉 이름과 시도 횟수를 한 줄에 기록하였으므로
문서 번호 20161122_v1 4 해당 값을 읽을 때도 형식 지정 함수인 fscanf 함 필수
상세 설계서 작성자 홍길동 수를 이용하여 형식에 맞추어 파일을 읽어 준다.
작성 일자 20161122
void rRecord() {
함수 우선
순번 상세 기능 기술 비고 // record.txt 파일을 처음부터 읽어 이름, 시도
프로토 타입 순위
횟수를 화면에 출력한다.
• 이 함수는 반환형은 없으며 매개 변수로 정수형 }
배열 tBalls를 받는다.
• 이 함수는 받은 정수형 배열에 0에서 9 사이의 • 이 파일에서 기존에 만들어진 함수들을 이용하기
정수를 입력하는 기능을 가진다. 위해서 모든 헤더 파일들을 먼저 포함 시킨다.
• 먼저 사용자가 게임을 할 것인지 기록을 볼 것
•gtBalls.h 파일에 이 함수를 저장한다. 인지를 선택하도록 한다. 1을 입력하면 게임을
void gtBalls
1 필수 진행하고, 2를 입력하면 기록을 보도록 한다.
(int tBalls[ ]) void gtBalls(int tBalls[ ]) { • 사용자가 1을 입력하면 나중에 기록을 위해 먼저
사용자 이름을 입력받는다. 그리고 gtBalls() 함수
// 난수 발생 함수를 이용하여 0에서 9 사이의 를 호출하여 사용자가 맞추어야 할 난수 3개를
중복 없는 정수 3개를 만든다. 생성한다. 그 다음 hitBalls() 함수를 호출하여 사
// 만든 정수 3개는 tBalls[]에 저장한다. 용자가 숫자 3개를 맞출 때까지 반복한다. 그리
} 고 시도 횟수를 반환받아 변수에 기록하고
wRecord() 함수를 호출하여 결과를 기록하고 프
• 이 함수는 반환형은 없으며 매개 변수로 정수형
로그램을 종료한다.
배열 tBalls를 받는다. • 사용자가 처음에 2를 입력하면 rRecord 함수를
• 이 함수의 반환형은 정수이며 매개 변수로 정수 호출하여 지금까지 게임을 플레이한 사용자들의
형 배열 하나를 받는다. 기록을 파일에서 읽어서 화면에 출력하고 프로
• 이 함수의 기능은 반복문을 이용하여 사용자로 그램을 종료한다.
부터 숫자 3개를 입력받고 그 받은 값은 배열에
저장한 다음 매개 변수로 받은 배열에 들어 있
는 값과 비교하여 입력받은 숫자가 매개 변수로 5 struct pdata { 필수
// 구조체를 이용하여 사용자 이름과 시도 횟수
받은 배열에 있으나 그 위치가 다르면 볼, 위치
까지 같으면 스트라이크를 출력해 준다. 를 정의하는 구조체 변수를 만든다.
};
• 숫자 3개의 값과 위치가 모두 일치할 때까지 반
복한다. 한번 시도할 때마다 tries 변수의 값을 1씩
int hitBalls int main()
2 증가시키고 숫자 3개의 값과 위치가 모두 일치 필수 {
(int tBalls[ ]
하면 저장된 tries 값을 반환한다. // 게임을 하려면 1, 기록을 하려면 2를 입력하
• 이 함수는 hitBalls.h에 저장한다. 라고 안내하고
// 입력받는다.
int hitBalls(int tBalls[ ]){
// 변수 선언 switch(select) {
// 반복문을 이용하여 사용자로부터 0에서 9 사 // 선택 사항에 따라 게임을 하려면 사용자
이의 정수를 입력받은 이름을 입력받는다.
// 입력받은 수와 tBalls와 비교 // gtBall, wRecord 함수를 차례로 호출한다.
// 게임의 결과를 기록하고 프로그램을 종료
// 위치와 값을 비교하여 0 스트라이크, 0 볼 한다.
형태로 화면에 출력 // 기록을 볼때는 rRecord 함수를 호출하여
// 모두 맞추면 사용자가 시도한 횟수를 반환하 화면에 기록을 보여 주고 종료한다.
고 화면에 게임이 끝났습니다. 출력 }
정답 및 해설 277
(책)2015프로그래밍-교과서3차심의본 본문.indb 277 2017-09-05 오후 4:17:13