Компонентный Паскаль/Транспонирование многомерных матриц: различия между версиями
Содержимое удалено Содержимое добавлено
Fantom78 (обсуждение | вклад) Нет описания правки |
Fantom78 (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
Разбор текста программы предлагается произвести самостоятельно. |
Разбор текста программы предлагается произвести самостоятельно. |
||
<source lang="oberon2"> |
<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> |
</source> |
||
{{BookCat}} |
{{BookCat}} |
Версия от 11:49, 20 апреля 2015
Пример транспонирования многомерной матрицы
Большая часть информации из прошлой главы применима и к текущей. Разбор текста программы предлагается произвести самостоятельно.
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.