코딩 이야기

[C언어] 주사위를 던져 각 면이 몇번 나왔는지 반환하는 함수를 만들어보자

고주망고 2021. 7. 28. 07:46

실행예제 1
실행예제

문제: 주사위를 100번 던져 각각의 면이 몇 번 나왔는지 출력하는 프로그램을 만들어라

조건1: 주사위 면은 난수를 사용하여 생성한다

조건2: 주사위를 던지는 함수 get_dice_face()함수를 만들어라

조건3: 조건2에서 각각의 면이 나올때마다 그 횟수를 정적 지역 변수를 이용하여 기억하게 하기.

조건4: 100회를 호출하면 각 면의 횟수를 다음 실행예제 1, 실행예제 2와 같이 출력하기.

 


답안:

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

void get_dice_face(int);

void main() {
register int i; //반복문의 속도를 올리기 위하여 레지스터 변수 사용
srand((unsigned)time(NULL)); //시간함수를 이용하여 rand()의 값이 계속 다르게 추출함
for (i = 1; i <= 100; i++) {
get_dice_face(0);
if (i == 100) {
get_dice_face(100);
}
}
}


void get_dice_face(int count) {
static int onecount = 0, twocount = 0, threecount = 0, fourcount = 0, fivecount = 0, sixcount = 0;
int num = (rand() % 6) + 1;

if (count == 100) { //주사위를 100번 던진후 각 면의 횟수를 출력한다.
printf("1번이 나온 횟수는:%d\n", onecount);
printf("2번이 나온 횟수는:%d\n", twocount);
printf("3번이 나온 횟수는:%d\n", threecount);
printf("4번이 나온 횟수는:%d\n", fourcount);
printf("5번이 나온 횟수는:%d\n", fivecount);
printf("6번이 나온 횟수는:%d\n", sixcount);
}
else {
switch (num) {
case 1:
onecount++;
break;
case 2:
twocount++;
break;
case 3:
threecount++;
break;
case 4:
fourcount++;
break;
case 5:
fivecount++;
break;
case 6:
sixcount++;
break;
default:
printf("오류가 발생하였습니다");
break;
}
}
}