더북(TheBook)

약병을 3회 조합해 회차마다 머리카락이 나는지 안 나는지 보여 준다고 했습니다. 약병을 조합해 결과를 보여 주는 부분을 작성해 봅시다.

횟수가 나왔으니 반복문을 사용해야겠네요. for 문에 i가 1부터 3까지 1씩 증가하는 조건을 넣습니다. 그리고 for 문 안에 테스트가 3회 이뤄지는 과정을 넣습니다.

for 문 안에 약병을 나타내는 bottle이라는 배열을 선언합니다. 4병이므로 배열 크기를 4로 하고, 초깃값은 일단 0으로 저장합니다.

회차마다 조합할 약병 개수를 정합니다. 약병은 한 번에 2개 또는 3개씩 조합하므로 무작위로 2~3의 숫자가 나오도록 rand() % 2 + 2를 사용합니다. rand() % 2를 하면 0 또는 1이 나오고 여기에다 + 2를 하니까 결국 2나 3이 나옵니다.

여기서 한 가지를 추가합니다. 테스트할 때마다 약병 4개 중에서 2개나 3개를 조합합니다. 1번/2번을 조합할 수도 있고, 1번/2번/3번을 조합할 수도 있습니다. 당연히 1번/2번, 2번/3번, 3번/4번 조합이 골고루 나오면 정답을 맞히기 좋습니다. 그러나 무작위라서 1번/3번, 1번/3번처럼 같은 조합이 연속으로 나올 수도 있습니다. 그래서 앞 회차에 조합한 약병 개수와 이번 회차에 조합할 약병 개수가 달라지도록 설정합니다. 처음에 약병 2개를 보여 줬으면 다음에는 3개를 보여 주는 식이죠. 이렇게 하면 결과를 비교하기 쉬워서 정답률을 높일 수 있습니다. 이 작업에 필요한 변수 2개를 for 문 위에 선언합니다. 이번 회차에서 조합하는 약병 개수를 저장할 cntShowBottle, 앞 회차에서 조합한 약병 개수를 저장할 prevCntShowBottle 변수를 선언하고, 초깃값으로 0을 넣습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.