Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
48
Task/Zig-zag-matrix/Modula-3/zig-zag-matrix.mod3
Normal file
48
Task/Zig-zag-matrix/Modula-3/zig-zag-matrix.mod3
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
MODULE ZigZag EXPORTS Main;
|
||||
|
||||
IMPORT IO, Fmt;
|
||||
|
||||
TYPE Matrix = REF ARRAY OF ARRAY OF CARDINAL;
|
||||
|
||||
PROCEDURE Create(size: CARDINAL): Matrix =
|
||||
PROCEDURE move(VAR i, j: INTEGER) =
|
||||
BEGIN
|
||||
IF j < (size - 1) THEN
|
||||
IF (i - 1) < 0 THEN
|
||||
i := 0;
|
||||
ELSE
|
||||
i := i - 1;
|
||||
END;
|
||||
INC(j);
|
||||
ELSE
|
||||
INC(i);
|
||||
END;
|
||||
END move;
|
||||
|
||||
VAR data := NEW(Matrix, size, size);
|
||||
x, y: INTEGER := 0;
|
||||
BEGIN
|
||||
FOR v := 0 TO size * size - 1 DO
|
||||
data[y, x] := v;
|
||||
IF (x + y) MOD 2 = 0 THEN
|
||||
move(y, x);
|
||||
ELSE
|
||||
move(x, y);
|
||||
END;
|
||||
END;
|
||||
RETURN data;
|
||||
END Create;
|
||||
|
||||
PROCEDURE Print(data: Matrix) =
|
||||
BEGIN
|
||||
FOR i := FIRST(data^) TO LAST(data^) DO
|
||||
FOR j := FIRST(data[0]) TO LAST(data[0]) DO
|
||||
IO.Put(Fmt.F("%3s", Fmt.Int(data[i, j])));
|
||||
END;
|
||||
IO.Put("\n");
|
||||
END;
|
||||
END Print;
|
||||
|
||||
BEGIN
|
||||
Print(Create(5));
|
||||
END ZigZag.
|
||||
Loading…
Add table
Add a link
Reference in a new issue