Test/C

로또 번호 6개를 선택하고 랜덤 생성한 6개의 당첨번호와 비교

kiostory 2017. 8. 8. 16:58

랜덤 함수를 이용하고, 입력하거나 생성된 번호는 모두 소팅한다.



#include <stdlib.h>
#include <time.h>

void input_data(int *my, int size);
void sort_data(int *my, int size);
void print_data(int *my, int size);
void input_lotto(int *lotto, int size);
int same_num(int *lotto, int *my, int size);


int main(void)

{
    int lotto[6]; // 당첨번호를 담을 배열
    int my[6]; // 입력한 숫자를 담을 배열
    int cnt; //몇개 맞았는지 담을 변수

    input_data(my, 6); // 입력받을 함수
    sort_data(my, 6); //작은수부터 큰수로 쏘팅할 함수
    print_data(my, 6); //숫자를 나열할 함수
    input_lotto(lotto, 6); //랜덤 로또 당첨번호를 발생시켜 배열에 넣을 함수
    sort_data(lotto, 6);
    print_data(lotto, 6);
    cnt = same_num(lotto, my, 6); // 랜덤 생성된 로또번호에서 중복되는 번호가 있지않나 확인하는 함수
    printf("일치하는 번호의 수 : %d\n", cnt);

    return 0;

}



void input_data(int *my, int size)
{
    int i;
    for(i=0;i<size;i++)
    {
        printf("%d번째 번호 : ",i+1);
        scanf("%d",&my[i]);
        printf("\n");
    }
}



void sort_data(int *my, int size)
{
    int i, j, temp;

    for(i = 0; i < size - 1; i++)
    {
        for(j = i + 1; j < size; j++)
        {
            if(my[i] > my[j])
            {
                temp = my[i];
                my[i] = my[j];
                my[j] = temp;
            }
        }
    }
}



void print_data(int *my, int size)
{
    int i;
    printf("번호 : \n");
    for(i=0;i<size;i++)
    {
        printf("%5d",my[i]);
    }
    printf("\n");
}



void input_lotto(int *lotto, int size)
{
    int num;
    int i,j;
    srand(time(0)); //include time.h 필요 --> rand()만 쓰면 같은 랜덤숫자만 나옴. 랜덤발생 기준을 바꿔줘야...그래서 쓰는 함수

    for(i=0; i<size; i++)
    {
        num=rand() % 45 +1 ; //stdlib.h 필요
        lotto[i] = num;

        for(j=0; i>j; j++)
        {
            if(lotto[i]==lotto[j])
            {
                i--;
                break;
            }
        }
    }
}

int same_num(int *lotto, int *my, int size)
{
    int i,j,cnt=0;
    for(i=0;i<size;i++)
    {
        for(j=0;j<size;j++)
            if(lotto[i]==my[j]) cnt++;
    }
    return cnt;
}
--------------------------------------------------------------------



2번째 번호 : 26

3번째 번호 : 37

4번째 번호 : 29

5번째 번호 : 13

6번째 번호 : 7

                         --->여기까지는 입력

번호 :                 --->입력번호 쏘팅
    7   13   26   29   37   45
번호 :                 --->당첨번호
    4   24   28   32   40   44
일치하는 번호의 수 : 0