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

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 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.