로또 번호

CJB_ny·2022년 8월 4일
0

C++ 정리

목록 보기
38/95
post-thumbnail

1. Swap 함수 구현

void Swap(OUT int& num1, OUT int& num2)
{
	int temp = num2;
	num2 = num1;
	num1 = temp;
}

2. 배열 버블 정렬

void Sort(int number[], int count)
{
	for (int  j = 0; j < count; ++j)
	{
		for (int i = 0; i < count - 1; ++i)
		{
			if (*(number + i) > *(number + i + 1))
			{
				int temp = *(number + i);
				*(number + i) = *(number + i + 1);
				*(number + i + 1) = temp;
			}
		}
	}
}

이렇게해야 성능에 조금 더 좋다.

배열 크기 팁 ❗❗❗

지금 Sort함수의 두번재 인자로 계속 정수를 넣어주는데

sizeof(numbers); // int(4) * 6 => 24
sizeof(int); // => 4

배열의 크기는 sizeof(numbers) / sizeof(int) => 6 나온다.

Sort(numbers, sizeof(numbers) / sizeof(int) );
// 이렇게해주면 됨.

3. 로또 번호 생성

정렬된 상태로 만들어라

이중반복문 안에서 이중안에서 break써도 for문 빠져나간다.

이미 찾은건지 아닌지 boolean하나 놔두면됨.


void Lotto(int numbers[])
{
	int count = 0;

	srand((unsigned int)time(0));

	while(count != sizeof(numbers) / sizeof(int) )
	{
		// 중복 X
		int number = ( rand() % 45) + 1;
		bool find = false;

		for (int i = 0; i < sizeof(numbers) / sizeof(int); ++i)
		{
			if (numbers[count] == number)
				find = true;
		}

		if (find == false)
		{
			*(numbers + count) = number;
			++count;
		}
	}

	Sort(numbers, 6);
}
profile
공부 일기장으로 변해버린 블로그 (https://cjbworld.tistory.com/ <- 이사중)

0개의 댓글