<div>1~45사이의 숫자가 랜덤으로 여섯번 출력되게 하는 프로그램을 짜는 문제입니다..</div> <div>이때 중복되는 값이 없도록 출력해야하며, 난수를 발생시키는 함수 int lotto(void)와 중복을 검사하는 함수 int is_in_array(int size, int num)은 반드시 사용해야만 합니다.</div> <div> </div> <div>아래 코드처럼 짜봤는데 중복되는 값이 계속 나와서 질문드립니다. 어느 부분을 고쳐야 잘 돌아갈까요?</div> <div>이상하게 문제를 못찾겠습니다.. 물론 제 눈에만 안보이는것 같긴 합니다만</div> <div> </div> <div>도와주시면 정말로 감사하겠습니다... 꾸벅</div> <div> </div> <div> </div> <div> </div> <div>#include <stdio.h><br>#include <stdlib.h><br>#include <time.h></div> <div>int lottoNum[6];</div> <div>int lotto(void) /* 난수 생성 함수 */<br>{<br> int number;<br> long seed;</div> <div> seed = time(NULL); /* 시간이 지남에 따라 새로운 난수 생성 */<br> number = (rand() % 45 + 1); /* 생성한 난수를 number에 저장 */</div> <div> return number; /* number값 반환 */<br>}</div> <div>int is_in_array(int size, int num) /* 중복검사 함수 */<br>{<br> int i, j;</div> <div> for (i = 0; i < size; i++)<br> {<br> for (j = 1; j < size; j++)<br> {<br> if (lottoNum[i] == num) /* 현재 i번째 값과 비교 */<br> {<br> if (lottoNum[j] == lottoNum[i]) /* 이전에 생성된 값과 비교 */<br> return 1; /* 같은 수가 있다면 1을 반환 */<br> }</div> <div> else<br> return 0;<br> }<br> }<br>}</div> <div>int main(void)<br>{<br> int i, a, count = 0;</div> <div> srand((unsigned)time(NULL));</div> <div> for (i = 0; i < 6; i++)<br> lottoNum[i] = rand() % 45 + 1;</div> <div> while (1)<br> {<br> a = is_in_array(i, lottoNum[i]); /* a = 1이면 같은 숫자가 있음 */</div> <div> if (a == 1)<br> {<br> lottoNum[i] = lotto(); /* 재생성 */<br> }</div> <div> else if (a == 0) /* 같은 숫자가 없음 */<br> {<br> count++;</div> <div> if (count == 5)<br> break;<br> }<br> }</div> <div> for (i = 0; i < 6; i++)<br> printf("%d ", lottoNum[i]);</div> <div> return 0;<br>}</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.