더북(TheBook)

여기까지 작성하고 실행하면 문제 5개가 출력됩니다. x, y에 들어가는 숫자도 지정한 범위 안에서 잘 뽑힙니다. 숫자 범위가 이상하다면 난수를 생성할 때 + 1을 했는지 확인해 주세요.

 

난수 생성 부분 함수로 바꾸기

이제 함수를 활용해 봅시다. 중복되는 부분이 보이나요? 난수를 생성하는 rand() % 9 + 1이 중복되죠? 이 부분을 함수로 바꿔 보겠습니다.

난수를 생성하는 함수이니 getRandomNumber()라고 합시다. 그런데 문제가 점점 어려워진다고 했습니다. 어떻게 해야 어려워질까요? for 문을 보면 반복할 때마다 i가 1부터 5까지 1씩 증가합니다. 이를 1부터 5까지 문제 단계가 오른다고 보면 어떨까요? 그러면 이 값을 활용해 조금 더 큰 숫자를 생성할 수 있습니다. 이를 위해 getRandomNumber()함수를 호출할 때 i를 전달해 봅시다.

함수를 호출하려면 함수를 선언하고 정의해야 합니다. 먼저 main()함수 위에 함수를 선언합니다. getRandomNumber()함수는 정수인 난수를 반환하므로 반환형은 int, 전달값인 i는 문제 단계이므로 매개변수는 int level로 선언합니다.

main()함수 아래에 함수를 정의합니다. 원래 코드는 rand() % 9 + 1이었지만, 단계별로 문제가 어려워지도록 호출할 때 전달받은 문제 단계를 곱해 숫자를 키웁니다. 그래서 rand() % (level * 9) + 1getRandomNumber()함수의 본문으로 넣습니다. level이 1이면 1~9의 9개 숫자 중에서 하나를 난수로 생성하고, level이 5이면 1~45의 45개 숫자 중 하나를 난수로 생성합니다. level이 올라가면서 숫자 범위가 커지므로 점점 어려운 문제가 나옵니다. 이렇게 생성한 난수를 return 문으로 반환합니다.

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