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 c:\cxpl\codes;                  \intrinsic 'code' declarations
def  Size=10;
 
proc Nest(A);   \Display 2-dimensional array A contents until 20 is found
int  A;
int  I, J, K;
[for J:= 0 to Size-1 do
    for I:= 0 to Size-1 do
        [K:= A(I,J);
        IntOut(0, K);  ChOut(0, ^ );
        if K = 20 then return;          \there is no 'goto' instruction
        ];
]; \Nest
 
proc Fill(A);   \Fill 2-dimensional array A with random numbers 1..20
int  A;
int  I, J;
[for J:= 0 to Size-1 do
    for I:= 0 to Size-1 do
        A(I,J):= Ran(20)+1;
]; \Fill
 
int Array(Size,Size);
[Fill(Array);
 Nest(Array);
]