Show a nested loop which searches a two-dimensional array filled with random numbers uniformly distributed over 



[
1
,
…
,
20
]


{\displaystyle [1,\ldots ,20]}

.

The loops iterate rows and columns of the array printing the elements until the value 



20


{\displaystyle 20}

 is met.

Specifically, this task also shows how to break out of nested loops.



Related tasks

   Loop over multiple arrays simultaneously
   Loops/Break
   Loops/Continue
   Loops/Do-while
   Loops/Downward for
   Loops/For
   Loops/For with a specified step
   Loops/Foreach
   Loops/Increment loop index within loop body
   Loops/Infinite
   Loops/N plus one half
   Loops/Nested
   Loops/While
   Loops/with multiple ranges
   Loops/Wrong ranges


var
  matrix: array[1..10,1..10] of Integer;
  row, col: Integer;
  broken: Boolean;
begin
  // Launch random number generator
  randomize;
  // Filling matrix with random numbers
  for row := 1 to 10 do
    for col := 1 to 10 do
      matrix[row, col] := Succ(Random(20));
  // Displaying values one by one, until at the end or reached number 20
  Broken := False;
  for row := 1 to 10 do
  begin
    for col := 1 to 10 do
    begin
      ShowMessage(IntToStr(matrix[row, col]));
      if matrix[row, col] = 20 then
      begin
        Broken := True;
        break;
      end;
    end;
    if Broken then break;
  end;
end;