작성
·
221
0
void ChooseLotto(int numbers[])
{
srand((unsigned)time(0));
int count = 0;
bool overlap;
while (count < 6)
{
int randValue = 1 + (rand() % 45);
overlap = false;
for (int i = 0; i < count; i++)
{
if (randValue == numbers[i])
overlap = true;
break;
}
if (overlap)
continue;
numbers[count] = randValue;
count++;
}
Sort(numbers, 6);
}
강의와 달리 저는 중복을 체크하는 found 값을 overlap이란 변수명으로 whil문 밖에서 선언하고, while을 돌때마다 false로 갱신해주는 방법으로 함수를 짜봤는데, 중복을 못걸러내는 문제가 발생했습니다.
제가 보기엔 강의에서의 코드와 거의 차이가 없는데 왜 중복을 못거르는 문제가 발생하는지 잘 모르겠습니다.
답변 1
0
if (randValue == numbers[i])
overlap = true;
break;
살짝 보니 저 부분이 수상한데요.
if 와 무관하게 break가 100% 확률로 실행되고 있습니다.
C++은 파이썬이랑 다르게 Indentation(스페이스나 탭으로 띄워쓴 것)이 아무런 영향을 주지 않습니다.
아마도 의도하신 코드는
if (randValue == numbers[i])
{
overlap = true;
break;
}
이었을 것 같네요.