중복 검출하는 부분에서 많이 어려웠었다...
조금 더 개선할 수 있는 부분이 있을 것 같다.
#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 |