C++/C++입문

[C++] 빙고 게임_1

나는야 개발자 2025. 3. 25. 07:28
반응형

5,5 빙고판 만들기 

srand((unsigned int)time(0));
int iArray[25] = {};

//1~25까지의 숫자를 넣는다.
for (int i = 0; i < 25; ++i)
{
	iArray[i] = i + 1;
}

//섞기
int iTemp, idx1, idx2;
for (int i = 0; i < 100; ++i)
{
	idx1 = rand() % 25;
	idx2 = rand() % 25;
	iTemp = iArray[idx1];
	iArray[idx1] = iArray[idx2];
	iArray[idx2] = iTemp;
}

while (true)
{
	system("cls");

	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			cout << iArray[i * 5 + j] << "\t";
		}
		cout << endl;
	}
	break;
}

 

결과

 

입력부분 추가

cout << "숫자를 입력하세요(0 : 종료) : ";
int iInput;
cin >> iInput;

//종료
if (iInput == 0)
{
	break;
}
//1~25 사이의 숫자가 아닌 경우
else if (iInput < 1 || iInput > 25)
{
	cout << "잘못된 숫자입니다." << endl;
	continue;
}

 

숫자가 있을 경우 *처리 추가

//중복 입력 체크하기 위한 변수
bool bAcc = true;

//모든 숫자를 차례대로 검사해 입력한 숫자와 같은 숫자가 있는지 찾아낸다
for (int i = 0; i < 25; i++)
{
	//같은 숫자가 있을 경우 
	if (iInput == iArray[i]) 
	{
		//숫자를 찾았을 경우 중복된 숫자가 아니므로 
		//bAcc를 false로 만든다
		bAcc = false;

		//숫자를 *로 만들기 위해 특수한 값인 INT_MAX로 변경
		iArray[i] = INT_MAX;

		//더이상 다른 숫자를 찾아볼 필요가 없으므로 for문을 빠져나간다.
		break;
	}
}

//bAcc가 true일 경우 중복된 숫자를 입력해서 숫자*로 만들지 못했으므로
//다시 입력받기 위해 continue를 한다.
if (bAcc)
{
	continue;
}

 

빙고판을 만드는 while문 코드 수정

while (true)
{
	system("cls");

	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			if (iArray[i * 5 + j] == INT_MAX)
			{
				cout << "*\t";
			}
			else
			{
				cout << iArray[i * 5 + j] << "\t";
			}
		}
		cout << endl;
	}

 

최종 코드

srand((unsigned int)time(0));
int iArray[25] = {};

//1~25까지의 숫자를 넣는다.
for (int i = 0; i < 25; ++i)
{
	iArray[i] = i + 1;
}

//섞기
int iTemp, idx1, idx2;
for (int i = 0; i < 100; ++i)
{
	idx1 = rand() % 25;
	idx2 = rand() % 25;
	iTemp = iArray[idx1];
	iArray[idx1] = iArray[idx2];
	iArray[idx2] = iTemp;
}

while (true)
{
	system("cls");

	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			if (iArray[i * 5 + j] == INT_MAX)
			{
				cout << "*\t";
			}
			else
			{
				cout << iArray[i * 5 + j] << "\t";
			}
		}
		cout << endl;
	}

	cout << "숫자를 입력하세요(0 : 종료) : ";
	int iInput;
	cin >> iInput;
	
	//종료
	if (iInput == 0)
	{
		break;
	}
	//1~25 사이의 숫자가 아닌 경우
	else if (iInput < 1 || iInput > 25)
	{
		cout << "잘못된 숫자입니다." << endl;
		continue;
	}

	//중복 입력 체크하기 위한 변수
	bool bAcc = true;

	//모든 숫자를 차례대로 검사해 입력한 숫자와 같은 숫자가 있는지 찾아낸다
	for (int i = 0; i < 25; i++)
	{
		//같은 숫자가 있을 경우 
		if (iInput == iArray[i]) 
		{
			//숫자를 찾았을 경우 중복된 숫자가 아니므로 
			//bAcc를 false로 만든다
			bAcc = false;

			//숫자를 *로 만들기 위해 특수한 값인 INT_MAX로 변경
			iArray[i] = INT_MAX;

			//더이상 다른 숫자를 찾아볼 필요가 없으므로 for문을 빠져나간다.
			break;
		}
	}

	//bAcc가 true일 경우 중복된 숫자를 입력해서 숫자*로 만들지 못했으므로
	//다시 입력받기 위해 continue를 한다.
	if (bAcc)
	{
		continue;
	}

 

결과

- 다음 시간 추가 작업 진행

반응형

'C++ > C++입문' 카테고리의 다른 글

[C++] 빙고 게임_3  (0) 2025.03.26
[C++] 빙고 게임_2  (0) 2025.03.26
[C++] 로또 만들기  (0) 2025.03.25
[C++] 배열  (0) 2025.03.25
[C++] do while문  (0) 2025.03.25