🙇‍♀️로또 번호 생성기

🪐Swap 함수 만들기

  1. Swap 함수 만들기
void Swap(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}

참조를 활용하여 문제를 풀었는데, 헷갈렸음 포인터와 참조를 정확히 알아야겠다.

추가) 2022-05-19 복습하다가 추가함. 포인터랑 참조 확실히 이해!

void Swap(int* a, int* b) // 포인터 매개변수
{
	int temp = *a; // *a는 진퉁 a의 값, temp 변수에 진퉁 a값 대입
	*a = *b; // 진퉁 a에 진퉁 b를 대입
	*b = temp; // 진퉁 b에 temp값 대입
}

🪐Sort 함수 만들기

  1. Sort 함수 만들기 (내가 만든 버전)
    void Sort(int numbers[], int count)
    {
     for (int j = 0; j < count - 1; j++)
     {
         for (int i = 0; i < count - 1; i++)
         {
             if (numbers[i + 1] < numbers[i])
             {
                 Swap(numbers[i], numbers[i + 1]);
             }
         }
     }
    }
    
  • Sort 함수 만들기 (Rookiss 버전)
void Sort(int numbers[], int count)
{
	for (int i = 0; i < count; i++)
	{
		// i번째 값이 제일 좋은 후보라고 가정
		int best = i;

		// 다른 후보와 비교를 통해 제일 좋은 후보를 찾아나선다
		for (int j = i + 1; j < count; j++)
		{
			if (numbers[j] < numbers[best])
				best = j;
		}

		// 제일 좋은 후보와 교체하는 과정
		if (i != best)
			Swap(numbers[i], numbers[best]);
	}
}

🪐ChooseLotto 함수 만들기

  1. ChooseLotto 함수 만들기(내가 만든 버전)
void ChooseLotto(int numbers[])
{
	srand((unsigned)time(0)); // 랜덤 시드 설정

	int lotto[6] = {};

	for (int i = 0; i < 6; i++)
	{
		int number = rand() % 45 + 1;

		while (number != numbers[i])
		{
			number = rand() % 45 + 1;

			numbers[i] = rand() % 45 + 1;
		}
	}

	Sort(numbers, 6);
	// TODO : 랜덤으로 1~45 사이의 숫자 6개를 골라주세요! (단, 중복이 없어야 함)
	// 이렇게 만들면 중복이 허용된다 (while로 거른다고 생각했지만 i번쨰 이전 숫자들을 체크 못해서 안걸러짐)
}

추가) 2022-05-19 ChooseLotto 함수 만들기

void ChooseLotto(int numbers[])
{
	srand((unsigned)time(0)); // 랜덤 시드 설정

	int lottoArray[46] = {};

	for (int i = 0; i < 6; i++)
	{
		int num = rand() % 45 + 1;

		while (true)
		{
			if (lottoArray[num] == 0)
			{
				numbers[i] = num;
				lottoArray[num] = 1;
				break;
			}
			num = rand() % 45 + 1;
		}
	}

}
  • ChooseLotto 함수 만들기(Rookiss 버전)
void ChooseLotto(int numbers[])
{
	srand((unsigned)time(0)); // 랜덤 시드 설정

	int count = 0;
	while (count != 6)
	{
		int randValue = 1 + (rand() % 45); // 1~45

		// 이미 찾은 값인지?
		bool found = false;
		for (int i = 0; i < count; i++)
		{
			// 이미 찾은 값
			if (numbers[i] == randValue)
			{
				found == true;
				break;
			}
		}

		// 못 찾았으면 추가!
		if (found == false)
		{
			numbers[count] = randValue;
			count++;
		}
	}

	Sort(numbers, 6);
}

태그:

카테고리:

업데이트: