목표 : 지금까지 공부한 것과 rand, srand 함수를 이용해서 로또 번호 추첨기를 만들어보자
소스 코드 :
#include<stdio.h>
#include<windows.h>
#define NUM_MIN 1
#define NUM_MAX 45
#define VERSION 1
char Check(char* pList);
int main(void)
{
unsigned char Number[6] = { 0, };
unsigned char Cmd = 0;
unsigned char Reandom = 0;
unsigned char count = 0;
unsigned char GameMaxCount = 0;
unsigned char Games = 0;
char check = 0;
BOOL bIsRun = TRUE;
BOOL bGameRun = TRUE;
while (bIsRun)
{
srand(GetTickCount());
printf("게임명령어( 숫자 1 ~ 5 , c 종료 ) : ");
Cmd = getchar();
fflush(stdin);//enter키 정보 소멸(엔터도 아스키 코드 값이 있다.)
if (Cmd >= '1' && Cmd <= '5')
{
switch (Cmd)
{
case '1':
GameMaxCount = 1;
break;
case '2':
GameMaxCount = 2;
break;
case '3':
GameMaxCount = 3;
break;
case '4':
GameMaxCount = 4;
break;
case '5':
GameMaxCount = 5;
break;
}
//번호 추첨
while (GameMaxCount > Games)
{
for (count = 0; count < 6; count++)
{
Reandom = rand() % NUM_MAX + NUM_MIN;
Number[count] = Reandom;
}
//중복 검사
check = Check(Number);
if (check >= 0 && check <= 5)
{
continue;
}
//번호 출력
for (count = 0; count <6; count++)
{
printf("%2d ", Number[count]);
}
printf("\n");
Games++;
}
Games = 0;
}
else if (Cmd == 'c' || Cmd == 'C')
{
break;
}
else
{
printf("잘못된 명령어!!!\n");
}
}
return 0;
}
char Check(char* pList)
{
char count = 0;
char befor = 0;
BOOL bRun = TRUE;
for (count = 0; count < 6; count++)
{
for (befor = 0; befor < 6; befor++)
{
if (count == befor)
{
continue;// 같은것 끼리는 패스
}
if (pList[count] == pList[befor])
{
bRun = FALSE;
break;
}
}
if (bRun == FALSE)
{
break;
}
}
return count;
}
결과
#로또프로그램, #로또
'Programing - C > C Basic grammar ' 카테고리의 다른 글
043 구조체(struct) 이해하자 (0) | 2017.07.27 |
---|---|
042 NULL 포인터 이해하기 (0) | 2017.07.27 |
041 포인터 이해 (0) | 2017.07.27 |
040 메모리 이해하기 (0) | 2017.07.27 |
039 배열 이해하기 (0) | 2017.07.27 |