简体   繁体   中英

Check if an element exists in a 2d array and return something if true

I'm not all that familiar with using multidimensional arrays and here I'm trying to see if an element exists in a 2d array and if it does, I want some sort of indication.

// initialize an array 3x3
int matrix[3][3]; 
bool found = false;
// The matrix will be loaded with all 0 values, let's assume this has been done.

// Check if there are any 0's left in the matrix...

for(int x = 0; x < 3; x++){
    for(int y = 0; y < 3; y++){
        if(matrix[x][y] == 0){
           break; // << HERE I want to exit the entire loop.
        }else{
            continue; // Continue looping till you find a 0, if none found then break out and make: found = true;
        }
    }
}

A control flag will be useful:

bool found = false;
for (unsigned int row = 0; (!found) && (row < MAX_ROWS); ++ row)
{
  for (unsigned int column = 0; (!found) && (column < MAX_COLUMNS); ++ column)
  {
    if (matrix[row][column] == search_value)
    {
       found = true;
    }
  }
}

Edit 1:
If you want to preserve the row and column values then you need to break out of each loop:

bool found = false;
for (unsigned int row = 0; (!found) && (row < MAX_ROWS); ++ row)
{
  for (unsigned int column = 0; (!found) && (column < MAX_COLUMNS); ++ column)
  {
    if (matrix[row][column] == search_value)
    {
       found = true;
       break;
    }
  }
  if (found)
  {
    break;
  }
}

Try this :-

int matrix[3][3];
bool found = false;


for(int x = 0; x < 3 && found == false; x++)
  {
    for(int y = 0; y < 3; y++)
     {
       if(matrix[x][y] == 0)
       {
          found = true;
          break; 
       }
     }
 }
if (found)
 cout<<"0 exists in the matrix";
else
 cout<<"0 doesn't exist in the matrix";

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM