안녕하세요. 언제나 휴일이예요.
이번에는 로또 발생기입니다.
100개의 로또를 자동 발급하는 코드입니다.
알고리즘
make_lotto(base)
checks[0:45] := False
반복(i:0->6)
do
value: = random(1 to 45)
반복(checks[value])
checks[value]:=True
base[i] := value
소스 코드
/***************************************************************************************** * 로또 발생기 * 100개의 로또를 자동 발급하여라. *****************************************************************************************/ #include <stdlib.h> #include <time.h> #include <stdio.h> #include <Windows.h> #define MAX_NUM 45 #define NUM_LOTTO 6 void make_lotto(int* base) { int i = 0; int value=0; int checks[MAX_NUM] = { 0 };//checks[0:45]:=base for(i=0;i<NUM_LOTTO;i++)//반복(i:0->6) { do//do { value = rand() % 45 + 1;//value:= random(1 to 45) } while (checks[value]);//반복(checks[value]) checks[value] = 1;//checks[value] := True base[i] = value;//base[i] := value } } int main() { int lotto[NUM_LOTTO] = { 0 }; int i = 0, j = 0; printf("엔터를 치면 100개의 로또를 자동 발급합니다.\n"); getchar(); srand((unsigned)time(0));//랜덤 시드값 지정- 딱 한 번만 호출 for (i = 0; i < 100; i++) { make_lotto(lotto); printf("<%-3d th>", i + 1); for (j = 0; j < NUM_LOTTO; j++) { Sleep(300); printf("\t%2d", lotto[j]); } printf("\n"); } return 0; }