본문 바로가기

코딩

로또번호 자동 생성기

중복 검출하는 부분에서 많이 어려웠었다...

조금 더 개선할 수 있는 부분이 있을 것 같다.

#include<iostream>
#include<time.h>
using namespace std;
int main()
{
	int input[6]; //입력
	int lotto[6]; //번호생성
	int samenum = 0; //맞춘 횟수
	int count = 0; //배열 비교할 때 쓸 변수
	int retry = true; //중복검출 유무
	int j = 1; //중복검출 때 쓸 변수

	srand(time(NULL));

	while (true) //무한루프
	{		
		//번호 입력
		cout << "내 로또 번호를 입력하세요 -> ";
		for (int i = 0; i < 6; i++)
		{
			cin >> input[i];
		}

		//중복검출 시 다시 생성
		while (retry)
		{
			//로또 랜덤 생성
			for (int i = 0; i < 6; i++)
			{
				lotto[i] = rand() % 45 + 1;
			}

			//중복검출
			if (retry == true)
				retry = false;
			while (count<6)
			{
				for (int i = j; i < 6; i++)
				{					
					if (lotto[count] == lotto[i])
					{
						cout << "중복검출" << endl;
						retry = true;
					}
				}
				count++;
				j++;
			}			
			count = 0;
			j = 1;
		}		

		//번호 비교
		while (count < 6)
		{
			for (int i = 0; i < 6; i++)
			{
				if (input[count] == lotto[i])
				{
					samenum++;					
				}
			}
			count++;
		}

		//출력
		cout << "로또 번호 -> ";
		for (int i = 0; i < 6; i++)
		{
			cout << lotto[i] << " ";
		}
		cout << endl << samenum << "개 맞췄다!!" << endl << endl;

		//다시 반복을 위한 변수 초기화
		count = 0;
		samenum = 0;
		retry = true;
	}	
}

이중for문을 사용하여 좀 더 효율적인 방법

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    srand(time(NULL));

    int input[6];
    int com[6];
    int count = 0;

    while (true)
    {
        //매번 돌때마다 count 초기화
        count = 0;

        //로또번호 입력
        cout << "로또 번호 입력 -> ";
        for (int i = 0; i < 6; i++)
        {
            cin >> input[i];
        }
        cout << endl << endl;

        //컴퓨터 입력
        for (int i = 0; i < 6; i++)
        {
            com[i] = rand() % 45 + 1;
        }

        //중복검출
        for (int i = 0; i < 6; i++)
        {
            for (int j = 0; j < i; j++)
            {
                if (com[i] == com[j])
                {
                    cout << "중복검출" << endl;
                    com[i] = rand() % 45 + 1;
                    i--;
                }
            }
        }

        //맞춘 횟수
        for (int i = 0; i < 6; i++)
        {
            for (int j = 0; j < 6; j++)
            {
                if (input[i] == com[j])
                    count++;
            }
        }


        //출력
        cout << "내 로또 번호 -> ";
        for (int i = 0; i < 6; i++)
        {
            cout << input[i] << " ";
        }
        cout << endl;

        cout << "컴퓨터 로또 번호 -> ";
        for (int i = 0; i < 6; i++)
        {
            cout << com[i] << " ";
        }
        cout << endl;

        cout << count << "개 맞췄다" << endl;
    }
}

'코딩' 카테고리의 다른 글

월남뽕 게임  (2) 2022.10.18
별찍기 / 숫자야구게임  (0) 2022.10.18
가위바위보 게임  (2) 2022.10.13
숫자 유추해서 맞춰보기  (0) 2022.10.12
계산기 만들기  (0) 2022.10.12