1. 서로 교환하는 함수 만들기

참조 방식을 이용하여 만들면

void Swap(int& a, int& b)
{
    int c = a;
    a = b;
    b = c;
}

int main()
{
    int a = 1;
    int b = 2;
    Swap(a, b);

    cout << a << " " << b << endl;
    return 0;
}

포인터 방식을 이용하여 만들면

void Swap(int* a, int* b)
{
    int* c = a;
    a = b;
    b = c;
}

int main()
{
    int* a;
    int* b;
    *a = 1;
    *b = 2;
    Swap(a, b);

    cout << a << " " << b << endl;
    return 0;
}

 

2. 정렬 함수 만들기

void Sort(int numbers[], int count)
{
    for (int i = 0; i < count; i++)
    {
        for (int j = i + 1; j < count; j++)
        {
           if (numbers[i] > numbers[j])
           {
                Swap(numbers[i], numbers[j]);
            }
        }
    }
}

i번째 수와 j번째 수를 비교해서 스왑함수를 적용시켜준다.

 

3. 로또 번호 생성

void ChooseLotto(int numbers[])
{
    // 중복 없이 랜덤으로 1~45 사이의 숫자 6개를 선택
    srand((unsigned) time(0));

    int count = 0;
    while (count != 6)
    {
        int randNumber = rand() % 45 + 1;
        bool found = false; // 중복 방지
        for (int i = 0; i < count; i++)
        {
            if (numbers[i] == randNumber)
            {
                found = true;
                break;
            }
        }

        if (found == false)
        {
            numbers[count] = randNumber;
            count++;
        }
        
    }
    Sort(numbers, 6);
}

중복된 수를 넣지 않기 위해서 while문을 먼저 이용한다. 이후 중복 여부를 판단하기 위해 found 불리언을 사용한다.

found 불리언이 false(중복되지 않음)이면 랜덤 값을 해당 배열의 요소에 넣고 count를 1 증가시킨다.

이후 count가 6이 되면 while 문이 끝나게 된다.

최종적으로 획득한 배열을 정렬해준다.

'기초 C++ 스터디 > 예제' 카테고리의 다른 글

4-13. 문자열 수정하기  (0) 2023.05.23
4-12. Text RPG 만들기(2)  (0) 2023.05.23
4-3. 포인터 실습  (0) 2023.05.11
3-6. Text RPG 만들기  (0) 2023.05.10
2-3. 예제(별 찍기, 구구단)  (0) 2023.05.04