더북(TheBook)

6.6.5 전체 코드 확인하기

코드가 완성됐습니다. 실행해 볼까요?

6.6 프로젝트.c

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main(void) {
    srand(time(NULL));
    int treatment = rand() % 4; // 진짜 발모제 선택(0~3)
    printf("\n\n === 자라나라 머리카락 게임 === \n\n");
    int cntShowBottle = 0; // 이번 회차에 조합할 약병 개수
    int prevCntShowBottle = 0; // 앞 회차에서 조합한 약병 개수
    // 3회 테스트
    for (int i = 1; i <= 3; i++) {
        int bottle[4] = { 0, 0, 0, 0 }; // 약병 4개
        do {
            cntShowBottle = rand() % 2 + 2; // 조합할 약병 개수(0~1 + 2 -> 2~3)
        } while (cntShowBottle == prevCntShowBottle);
        prevCntShowBottle = cntShowBottle;
        printf(" > %d번째 테스트 : ", i);
        int isIncluded = 0; // 진짜 발모제인지 확인용
        // 조합할 약병 번호 선택
        for (int j = 0; j < cntShowBottle; j++) {
            int randBottle = rand() % 4; // 약병 번호 뽑기(0~3)
            if (bottle[randBottle] == 0) { // 아직 선택되지 않은 약병이면
                bottle[randBottle] = 1;
                if (randBottle == treatment) {
                    isIncluded = 1; // 1이면 해당 약병은 진짜 발모제
                }
            } else { // 이미 선택된 약병이면 중복이므로 다시 선택
                j--; // 반복 횟수 조정
            }
        }
        // 사용자에게 테스트 결과 표시
        for (int k = 0; k < 4; k++) {
            if (bottle[k] == 1) {
                printf("%d ", k + 1); // %d 뒤에 빈칸 하나 넣기
            }
        }
        printf("번 물약을 머리에바릅니다.\n\n");
        if (isIncluded == 1) { // 약병 조합에 발모제가 포함된 경우
            printf(">> 성공! 머리카락이 났어요!!\n");
        } else { // 약병 조합에 발모제가 포함되지 않은 경우
            printf(">> 실패! 머리카락이 나지 않았어요. ㅠㅠ\n");
        }
        printf("\n   계속하려면 Enter를 누르세요. \n");
        getchar(); // (void) getchar();
    }
    // 사용자 입력받기
    printf("\n\n발모제는 몇 번일까요? ");
    int answer;
    scanf_s("%d", &answer);
    if (answer == treatment + 1) {
        printf("\n>> 정답입니다!\n");
    } else {
        printf("\n>> 땡 ! 틀렸어요. 정답은 %d번입니다.\n", treatment + 1);
    }
    return 0;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.