Проверьте, существует ли элемент в 2d массиве и верните что-нибудь, если истина

0

Мне не все знакомы с использованием многомерных массивов, и здесь я пытаюсь выяснить, существует ли элемент в массиве 2d, и если да, то я хочу показать что-то вроде.

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

// Check if there are any 0 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;
        }
    }
}
  • 0
    Используйте эту found переменную. Удалить continue ; это не так, как если бы ваш цикл сделал что-нибудь еще без.
  • 0
    Вам нужно будет установить некоторый флаг (например, переменную bool) перед перерывом. Затем проверьте флаг за пределами внутреннего цикла и, если необходимо, снова разорвите. Это вырвется из обеих петель. Вам не нужно это продолжение заявления.
Показать ещё 1 комментарий
Теги:
arrays
loops
matrix

2 ответа

1
Лучший ответ

Флаг управления будет полезен:

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;
    }
  }
}

Изменить 1:
Если вы хотите сохранить значения row и column вам нужно break из каждого цикла:

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;
  }
}
0

Попробуй это :-

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";
  • 0
    Зачем вам нужно continue заявление?
  • 0
    С этим огромные проблемы, он ничего не вернет, если в массиве нет нулей. Или я не прав?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню