[카테고리:] <span>C언어 소스</span>

안녕하세요. 언제나 휴일이예요.

이번에는 로또 발생기입니다.

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;
}

C언어 소스