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


$ include "seed7_05.s7i";
 
const proc: main is func
  local
    var integer: i is 0;
    var integer: j is 0;
    var array array integer: a is 10 times 10 times 0;
    const EXCEPTION: FOUND20 is enumlit;
  begin
    for i range 1 to 10 do
      for j range 1 to 10 do
        a[i][j] := rand(1, 20);
      end for;
    end for;
    block
      for i range 1 to 10 do
        for j range 1 to 10 do
          write(a[i][j] lpad 2 <& ", ");
          if a[i][j] = 20 then
            raise FOUND20;
          end if;
        end for;
        writeln;
      end for;
    exception
      catch FOUND20: writeln;
    end block;
  end func;