https://chans-note2.tistory.com/m/32
박찬 님의 블로그 도움으로 문제 해결 .. 너무 어렵다..
문자입력할때도 꼭 스트링.
불값을 이용한 플래그 관리도 다시한번 복습하고 찾아보기.
#include<iostream>
#include<string>
#include<Windows.h>
using namespace std;
int main()
{
string bingo[5][5]; //스트링 문자 빙고 배열
string input; //스트링 문자 입력값 변수
int x = 0, y = 0; //출력 변수
bool playing = true; //중복 검출용 변수
int clear = 0, count = 0; //빙고 확인용 변수
//빙고 입력
while (x < 5 && y < 5) //X:01234 * Y:01234입력 다되면 while문 종료 조건
{
cout << "x : " << x << ", y : " << y << " 좌표의 이름을 입력해 주세요 : ";
cin >> input;
playing = true;
for (int y = 0; y < 5; y++) //배열내의 중복확인
{
for (int x = 0; x < 5; x++)
{
if (bingo[x][y] == input)
{
cout << "잘못된 입력 입니다. 다시 입력해 주세요." << endl;
playing = false;
}
}
}
if (playing) //배열내의 중복검출용 변수 확인
bingo[x][y] = input;
else
continue;
if (x != 4) x++; //반복을 위한 증감식
else
{
y++;
x = 0;
}
}
system("cls");
while (clear < 3) //3빙고 시 종료조건
{
cout <<"\t " << "[ 빙 고 시 작 ]" << endl;
cout << endl;
for (int y = 0; y < 5; y++) //빙고 출력
{
for (int x = 0; x < 5; x++)
{
if (bingo[x][y] == "-1") cout << "●" << "\t"; //입력된값 ●로 출력
else cout << bingo[x][y] << "\t"; //입력되지않은 값들 그대로 출력
}
cout << endl << endl;
}
cout << "빙고 : " << clear << endl;
cout << "입력 : ";
cin >> input;
//중복입력 체크
playing = false;
for (int y = 0; y < 5; y++)
{
for (int x = 0; x < 5; x++)
{
if (bingo[x][y] == input)
{
bingo[x][y] = "-1";
playing = true;
}
}
}
if (!playing) //중복값 입력시 출력
{
cout << "다시 입력해 주세요." << endl << endl;
continue;
}
clear = 0; //반복을 위해 빙고(clear)변수 초기화
for (int y = 0; y < 5; y++) //가로
{
count = 0;
for (int x = 0; x < 5; x++)
{
if (bingo[x][y] == "-1") count++;
}
if (count == 5) clear++;
}
for (int x = 0; x < 5; x++) //세로
{
count = 0;
for (int y = 0; y < 5; y++)
{
if (bingo[x][y] == "-1") count++;
}
if (count == 5) clear++;
}
int count1 = 0; //대각선1의 임시변수
int count2 = 0; //대각선2의 임시변수
for (int x = 0; x < 5; x++)
{
if (bingo[x][x] == "-1") count1++; //대각선1
if (count1 == 5) clear++;
if (bingo[4 - x][x] == "-1") count2++; //대각선2
if (count2 == 5) clear++;
}
system("cls");
}
cout << endl;
cout <<"[ 빙고 " << clear << " 개가 되어종료 합니다 ]" << endl;
cout << endl;
Sleep(2000); //프로그램 2초뒤 자동종료.
return 0;
}
'공부' 카테고리의 다른 글
메모리의 관리(구조/스택프레임/동적할당) (2) | 2022.10.26 |
---|---|
스트링 활용 빙교 풀이 (0) | 2022.10.26 |
숫자 빙고 게임 (0) | 2022.10.24 |
숫자 슬라이드 퍼즐 게임 (0) | 2022.10.23 |
아스키코드 참고자료 (0) | 2022.10.20 |
댓글