Компонентный Паскаль/Транспонирование многомерных матриц: различия между версиями
Содержимое удалено Содержимое добавлено
Fantom78 (обсуждение | вклад) |
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
||
Строка 3: | Строка 3: | ||
Большая часть информации из прошлой главы применима и к текущей. Единственным уточнением станет то, что для массивов в размере куба и выше транспонирование может быть выполнено множеством способов. |
Большая часть информации из прошлой главы применима и к текущей. Единственным уточнением станет то, что для массивов в размере куба и выше транспонирование может быть выполнено множеством способов. |
||
Разбор текста программы предлагается произвести самостоятельно. |
Разбор текста программы предлагается произвести самостоятельно. |
||
< |
<syntaxhighlight lang="oberon2"> |
||
MODULE TestHello13; |
MODULE TestHello13; |
||
(* Этот пример показывает как |
(* Этот пример показывает как |
||
Строка 77: | Строка 77: | ||
BEGIN |
BEGIN |
||
END TestHello13. |
END TestHello13. |
||
</syntaxhighlight> |
|||
</source> |
|||
Исходные данные для ввода: |
Исходные данные для ввода: |
||
< |
<syntaxhighlight lang="dos"> |
||
1 2 3 4 5 6 7 8 9 10 |
1 2 3 4 5 6 7 8 9 10 |
||
11 12 13 14 15 16 17 18 19 20 |
11 12 13 14 15 16 17 18 19 20 |
||
21 22 23 24 25 26 27 28 29 30 |
21 22 23 24 25 26 27 28 29 30 |
||
</syntaxhighlight> |
|||
</source> |
|||
Правильный вывод программы: |
Правильный вывод программы: |
||
< |
<syntaxhighlight lang="dos"> |
||
компилируется "TestHello13" 484 240 |
компилируется "TestHello13" 484 240 |
||
старый модуль TestHello13 выгружен |
старый модуль TestHello13 выгружен |
||
Строка 105: | Строка 105: | ||
2 5 8 11 14 17 20 23 26 29 |
2 5 8 11 14 17 20 23 26 29 |
||
3 6 9 12 15 18 21 24 27 30 |
3 6 9 12 15 18 21 24 27 30 |
||
</syntaxhighlight> |
|||
</source> |
|||
{{BookCat}} |
{{BookCat}} |
Текущая версия от 16:14, 16 апреля 2020
Пример транспонирования многомерной матрицы[править]
Большая часть информации из прошлой главы применима и к текущей. Единственным уточнением станет то, что для массивов в размере куба и выше транспонирование может быть выполнено множеством способов. Разбор текста программы предлагается произвести самостоятельно.
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.
Исходные данные для ввода:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
Правильный вывод программы:
компилируется "TestHello13" 484 240
старый модуль TestHello13 выгружен
Массив1:
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
16 17 18
19 20 21
22 23 24
25 26 27
28 29 30
Массив2:
1 4 7 10 13 16 19 22 25 28
2 5 8 11 14 17 20 23 26 29
3 6 9 12 15 18 21 24 27 30