Компонентный Паскаль/Транспонирование многомерных матриц: различия между версиями

Разбор текста программы предлагается произвести самостоятельно.
<source lang="oberon2">
MODULE TestHello13;
(* Этот пример показывает как
транспонировать матрицу *)
 
IMPORT In, Log, Math;
 
VAR
m1: ARRAY 10, 3 OF INTEGER;
m2: ARRAY 3, 10 OF INTEGER;
 
PROCEDURE Out_m2;
VAR
x, y: INTEGER;
BEGIN
Log.String('Массив2: '); Log.Ln;
FOR x := 0 TO 2 DO
FOR y := 0 TO 9 DO
Log.Int(m2[x, y])
END;
Log.Ln
END;
END Out_m2;
 
PROCEDURE Out_m1;
VAR
x, y: INTEGER;
BEGIN
Log.String('Массив1: '); Log.Ln;
FOR x := 0 TO 9 DO
FOR y := 0 TO 2 DO
Log.Int(m1[x, y])
END;
Log.Ln
END;
END Out_m1;
 
PROCEDURE TransMas; (* транспонировние *)
VAR
x, y: INTEGER;
BEGIN
FOR x := 0 TO 9 DO
FOR y := 0 TO 2 DO
m2[y, x] := m1[x, y]
END;
END;
 
END TransMas;
 
PROCEDURE GetMas; (* получение массива *)
VAR
x, y: INTEGER;
BEGIN
In.Open;
WHILE In.Done DO
FOR x := 0 TO 9 DO
FOR y := 0 TO 2 DO
In.Int(m1[x, y])
END;
END;
END;
END GetMas;
 
PROCEDURE Start*;
VAR
BEGIN
GetMas;
TransMas;
Out_m1;
Out_m2;
END Start;
 
BEGIN
END TestHello13.
</source>
{{BookCat}}
788

правок