언어/C

[코딩자율학습] 11일차 프로젝트: 자라나라 머리머리

홍시_코딩기록 2024. 3. 18. 21:56
#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;
}

 

- 책을 보면서 겨우 따라해보긴 했지만 어려웠다ㅜㅠ

- 조합할 약병의 수를 구하는 방식이 어려워 책 완독한 후 다시 한 번 혼자서 해보려 한다.

 

 

 

== 프로젝트 실행 ===