C++ Rookiss Part1 C++ 프로그래밍 입문 : 로또 번호 생성기
🙇♀️로또 번호 생성기
🪐Swap 함수 만들기
- 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 함수 만들기
- 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 함수 만들기
- 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);
}