我试图弄清楚如何水平、对角线和亚对角线遍历 2d 数组以查看数组是否等于字符.如果数组等于字符,那么bool
应该返回 true,但我的问题是bool
随机返回 true。 仅当 char 等于特定列和行的数组时,bool
才返回 true。在这里,我正在硬编码它,但我想用 for 循环来做。如果您需要更多信息或需要解释某些内容,请告诉我
if (mCard[0][0] == '*' && mCard[0][1] == '*'&& mCard[0][2] == '*'&& mCard[0][3] == '*' && mCard[0][4] == '*') {
CheckBingo = true;
}
if (mCard[1][0] == '*' && mCard[1][1] == '*'&& mCard[1][2] == '*'&& mCard[1][3] == '*' && mCard[1][4] == '*') {
CheckBingo = true;
}
if (mCard[2][0] == '*' && mCard[2][1] == '*'&& mCard[2][2] == '*'&& mCard[2][3] == '*' && mCard[2][4] == '*') {
CheckBingo = true;
}
if (mCard[3][0] == '*' && mCard[3][1] == '*'&& mCard[3][2] == '*'&& mCard[3][3] == '*' && mCard[3][4] == '*') {
CheckBingo = true;
}
if (mCard[4][0] == '*' && mCard[4][1] == '*'&& mCard[4][2] == '*'&& mCard[4][3] == '*' && mCard[4][4] == '*') {
CheckBingo = true;
}
if (mCard[0][0] == '*' && mCard[1][0] == '*'&& mCard[2][0] == '*'&& mCard[3][0] == '*' && mCard[4][0] == '*') {
CheckBingo = true;
}
if (mCard[0][1] == '*' && mCard[1][1] == '*'&& mCard[2][1] == '*'&& mCard[3][1] == '*' && mCard[4][1] == '*') {
CheckBingo = true;
}
if (mCard[0][2] == '*' && mCard[1][2] == '*'&& mCard[2][2] == '*'&& mCard[3][2] == '*' && mCard[4][2] == '*') {
CheckBingo = true;
}
if (mCard[0][3] == '*' && mCard[1][3] == '*'&& mCard[2][3] == '*'&& mCard[3][3] == '*' && mCard[4][3] == '*') {
CheckBingo = true;
}
if (mCard[0][4] == '*' && mCard[1][4] == '*'&& mCard[2][4] == '*'&& mCard[3][4] == '*' && mCard[4][4] == '*') {
CheckBingo = true;
}
// checking for daigonal
if (mCard[0][0] == '*' && mCard[1][1] == '*'&& mCard[2][2] == '*'&& mCard[3][3] == '*' && mCard[4][4] == '*') {
CheckBingo = true;
}
// checking for sub diagonal
if (mCard[4][0] == '*' && mCard[3][1] == '*'&& mCard[2][2] == '*'&& mCard[1][3] == '*' && mCard[0][4] == '*') {
CheckBingo = true;
}
在这里我尝试使用 for 循环,但如果数组等于字符,它int
总是返回 true。
for(int row = 0; row < 5; row++) {
for(int col = 0; col < 5; col++) {
if(mCard[row][col] == '*') {
CheckBingo = true;
}
else {
CheckBingo = false;
break;
}
}
}
for(int row = 0; row < 5; row++) {
for(int col = 0; col < 5; col++) {
if(mCard[col][row] == '*') {
CheckBingo = true;
}
else {
CheckBingo = false;
break;
}
}
}
mCard[col][row] ...
row
和col
必须翻转。
然后,假设设置了匹配项,则开始循环。如果其中一个单元格不匹配,则匹配为假。请参阅下面的示例。
确保值已初始化。
int main()
{
char mCard[5][5] = {
'*','x','*','*','*',
'*','*','*','*','*',
'*','*','*','*','*',
'*','*','x','*','*',
'*','*','*','*','*',
};
bool CheckBingo = true;
for(int row = 0; row < 5; row++)
{
CheckBingo = true;
for(int col = 0; col < 5 && CheckBingo; col++)
{
if(mCard[row][col] != '*')
CheckBingo = false;
}
if(CheckBingo)
cout << "bingo on row " << row << "n";
}
bool match = true;
for(int row = 0; row < 5 && match; row++)
for(int col = 0; col < 5 && match; col++)
if(mCard[row][col] != '*')
match = false;
if(match) cout << "bingo for all linesn";
match = true;
for(int i = 0; i < 5 && match; i++)
if(mCard[i][i] != '*')
match = false;
if(match) cout << "top-left to bottom-right matchn";
match = true;
for(int i = 0; i < 5 && match; i++)
if(mCard[i][4-i] != '*')
match = false;
if(match) cout << "top-right to bottom-left matchn";
return 0;
}