상세 컨텐츠

본문 제목

C언어 - 로또(Lotto)프로그램 코딩

프로그래밍/공부관련

by jin* 2011. 11. 13. 00:22

본문






실행화면






소스



 

randArr

[0]

[1]

[2]

[3]

…………

[43]

[44]

1

2

3

4

…………

44

45

먼저 randArr라는 배열로 1부터 45개의 숫자를 생성합니다.

 

rand함수를 이용하여 0부터 44중 임의의 숫자를 생성한 후에 그 숫자를 randArr[숫자]로 대입하여 위에 randArr에 해당하는 변수를 추출합니다.

 

추출한 변수는 총 7개 생성될 로또 배열에 순차적으로 대입을 시키고,

 

추출되었던 randArr의 숫자는 0으로 변경시킵니다.

 

Ex) rand : 3을 생성하여 randArr[3]에 있는 값을 추출할 경우

randArr

[0]

[1]

[2]

[3]

…………

[43]

[44]

1

2

3

4 -> 0

…………

44

45

 

그 후 반복적으로 0을 제외하고 중복되지 않는 숫자를 생성해낼 때에 0이 나올 경우 while문을 이용하여 randArr[?]안에 있는 변수의 값이 0이 나오지 않을때까지 rand로 임의의 숫자를 계속 생성합니다.

 

위와같이 코딩을 할 경우 #define을 이용하면 최대치의 숫자와 로또생성할 개수를 미리 정해주면 45개든지 100개든지 어느숫자를 생성을 하더라도 절대로 중복되지 않고 쉽게 생성할 수 있습니다.

 

코딩을 main함수에서 구현한 것이 아니라 lottofunc()라는 함수를 이용만 하면 처음 #define에서 정해준 범위안에서 알아서 숫자를 생성해주면 생성된 숫자를 return해줌으로써 원하는 변수안에 대입만 해주면 바로바로 중복되지 않게 생성해줍니다.

(소스에서 int lottofunc(int x) 라고 되어 있는데 int xLog를 찍어주기 위해 값을 넘겨준 것이며, 필요 없을 시에는 0으로만 넘겨줘도 전혀 무관합니다.)





위 내용은 교수님께 레포트 작성 내용

결론적으로 위 소스는 한번 난수가 나왔던 숫자는 또 난수를 발생시키지 않는 소스

100개든 1000개든 단한번이라도 중복되지 않게 구현 


 

관련글 더보기

댓글 영역