#include <stdio.h>
#include <time.h>
#include <stdlib.h> //난수 생성하니까 추가
int main(void) {
srand(time(NULL));
int treatment = rand() % 4; //약병 4개 중 하나 선택해야하니까 %4로 난수 생성
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; //조합할 약병 개수(2 or 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; //값을 0 > 1
if (randBottle == treatment) {
isIncluded = 1; // 진짜 발모제가 포함됨.
}
} else { // 이미 선택된 약병이면 중복이므로 다시 선택
j--; //반복 횟수 조정
}
}
//테스트 결과 표시
for (int k = 0; k < 4; k++) {
if (bottle[k] == 1) {
printf("%d ", k + 1);
}
}
printf("번 물약을 머리에 바릅니다.\n\n");
if (isIncluded == 1) { //약병 조합에 발모제가 포함된 경우
printf(">> 성공! 머리카락이 났어요!\n");
} else {
printf("> 실패! 머리카락이 나지 않았어요. ㅜㅠ\n");
}
printf("\n\n 계속하려면 엔터를 누르세요");
getchar();
}
//사용자 입력받기
printf("\n\n 발모제는 몇번?");
int answer;
scanf_s("%d", &answer);
if (answer == treatment + 1) {
printf("\n 정답");
}
else {
printf("땡 정답은 %d번", treatment + 1);
}
return 0;
}
- 책을 보면서 겨우 따라해보긴 했지만 어려웠다ㅜㅠ
- 조합할 약병의 수를 구하는 방식이 어려워 책 완독한 후 다시 한 번 혼자서 해보려 한다.
== 프로젝트 실행 ===
'언어 > C' 카테고리의 다른 글
[코딩자율학습] 13일차 프로젝트 어항에 물주기 (0) | 2024.03.20 |
---|---|
[코딩자율학습] 12일차 포인터 (0) | 2024.03.19 |
[코딩자율학습] 10일차 배열과 문자열 (0) | 2024.03.15 |
[코딩자율학습] 9일차 프로젝트: 비밀번호 마스터 (0) | 2024.03.14 |
[코딩자율학습] 8일차 함수 (0) | 2024.03.13 |