반응형
Baseball Game 프로그램 구현하기
Baseball Game:
임의의 숫자 3개를 랜덤으로 저장하고, 그 값을 맞추도록 한다.
숫자와 위치가 정확히 맞으면 "strike", 숫자는 있으나 위치가 맞지 않으면 "ball"으로 한다.
저장된 숫자 | 입 력 | 출 력 |
8 6 4 | 7 2 0 | 0 strike, 0 ball |
8 4 3 | 1 strike, 1 ball | |
3 8 6 | 0 strike, 3 ball | |
8 6 4 | Perfect. Your count 4. |
#include<stdio.h>
#include<stdlib.h> // srand(), rand()
#include<time.h> // time()
int main(void){
int answer[3];
int question[3];
int strike, ball, count = 0;
srand(time(NULL)); // 현재 시간(time())을 인자로 넘겨 seed 값을 변경해준다.
question[0] = rand() % 9 + 1; // 1 ~ 9까지의 난수를 발생시킨다.
for( ; ; ){
question[1] = rand() % 9 + 1;
if(question[0] != question[1]) break; // 첫번째 수(question[0])와 두번째 수(question[1])가 일치하지 않으며 반복문을 종료한다.
}
do{ // 첫번째 수와 세번째 수(question[2]) 또는 두번째 수와 세번째 수가 일치하면 반복문을 계속한다.
question[2] = rand() % 9 + 1;
} while(question[0] == question[2] || question[1] == question[2]);
do{
printf("Input number [num1 num2 num3] : ");
scanf("%d %d %d", &answer[0], &answer[1], &answer[2]);
strike = ball = 0; // answer[] 숫자를 입력받을때마다 strike와 ball을 초기화 해준다.
++count; // 숫자를 입력받는 횟수를 count한다.
for(int i = 0; i < 3; ++i){
for(int j = 0; j < 3; ++j){
if(question[i] == answer[j]){ // question[i]와 answer[j]에 저장된 숫자가 같다.
if(i == j) ++strike; // 이 때, i와 j가 같으면 같은 배열상에 위치하였기 때문에 strike가 +된다.
else ++ball; // 하지만 그게 아니면, 같은 숫자만 존재하기 때문에 ball을 +한다.
}
}
}
printf("%d strike, %d ball\n", strike, ball);
} while(strike != 3);
printf("Perfect! Your score is %d\n", count);
return 0;
}
반응형
'C' 카테고리의 다른 글
[C언어] 실습: Lotto 번호 무작위 추첨하는 프로그램 구현하기 2 (1~45까지의 번호를 섞은 후, 차례로 7개의 숫자를 뽑아 Lotto 번호 결정하기) (0) | 2021.07.18 |
---|---|
[C언어] 실습: Lotto 번호 무작위 추첨하는 프로그램 구현하기 1 (7개의 번호 rand() 함수로 뽑아내기) (0) | 2021.07.17 |
[C언어] rand() (0) | 2021.07.13 |
[C언어] 계승 (Factorial) (0) | 2021.07.06 |
[C언어] 배열(Array)과 포인터(Pointer) 2 (0) | 2021.07.05 |