Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания матрицы.doc
Скачиваний:
2
Добавлен:
27.11.2019
Размер:
1.16 Mб
Скачать

7. Перестановка блоков элементов матриц

В этом пункте задания необходимо найти соответствия между номерами строк и столбцов новой и преобразованной матриц, то есть закон, по которому переставляются элементы матрицы.

Пример 13. Получить матрицу Е, переставив блоки элементов матрицы D. Требуемые перестановки блоков матрицы D показаны на рисунке.

PROGRAM PR13;

VAR D, E : ARRAY [1..6, 1..6] OF REAL;

i, j : INTEGER;

BEGIN

{Ввести элементы матрицы D (способы задания матриц приведены в примерах 1, 2)}

E:=D;

FOR i:=3 TO 4 DO

FOR j:=5 TO 6 DO

E[i+2, j-2]:=D[i, j];

FOR i:=5 TO 6 DO

FOR j:=3 TO 4 DO

E[i-2, j+2]:=D[i, j];

{Вывод на экран матрицы E (см. примеры 3, 4)};

END.

Пояснения к программе: Сначала элементам матрицы E присваиваются соответствующие элементы матрицы D.

Рассмотрим элементы блока 1. Элемент D[3, 5] должен стать элементом E[5, 3]. То есть номер строки элемента D[3, 5] увеличивается на 2, а номер столбца уменьшается на 2.

Аналогичное изменение номеров строк и столбцов будет у элементов: D[3, 6] – E[5, 4];

D[4, 5] – E[6, 3];

D[4, 6] – E[6, 4].

Для перестановки данной группы элементов матрицы D в программе применяется вложенный цикл.

Теперь найдем закономерность для элементов блока 2 матрицы D. Элемент D[5, 3] должен стать элементом E[3, 5];

D[5, 4] – E[3, 6];

D[6, 3] – E[4, 5];

D[6, 4] – E[4, 6].

Нетрудно заметить, что номер строки матрицы D уменьшается на 2, а номер столбца увеличивается на 2.

Для перестановки этой группы элементов матрицы D в программе также используются вложенный цикл. Поскольку в данной программе выполняются однотипные действия, то можно описать процедуру, которая сократит программу. Рассмотрим пример.

Пример 14. Получить матрицу Е, переставив блоки элементов матрицы D. Требуемые перестановки блоков показаны на рисунке в примере 13. Решить задачу, используя процедуру.

PROGRAM PR14;

TYPE Mas = ARRAY [1..6, 1..6] OF REAL;

VAR D, E : Mas;

i, j : INTEGER;

PROCEDURE S (DS:Mas; i1,i2,j1,j2,is,js:INTEGER; VAR ES:Mas);

BEGIN

FOR i:=i1 TO i2 DO

FOR j:=j1 TO j2 DO

ES[i+is, j+js]:=DS[i, j];

END;

BEGIN

{Ввести элементы матрицы D (способы задания матриц приведены в примерах 1, 2)}

E:=D;

S(D, 3, 4, 5, 6, 2, -2, E);

S(D, 5, 6, 3, 4, -2, 2, E);

{Вывод на экран матрицы E (см. примеры 3, 4)};

END.

Пояснения к программе: Формальными параметрами процедуры S являются:

DS – переменная, определяющая имя исходной матрицы;

i1, i2 – номера строк переставляемого блока;

j1, j2 – номера столбцов переставляемого блока;

is, js – переменные, определяющие изменения номеров строк и столбцов матрицы;

ES – переменная, определяющая имя преобразованной матрицы.

Сначала элементам матрицы E присваиваются соответствующие элементы матрицы D. Затем дважды выполняется процедура S, но с различными значениями формальных параметров. При первом выполнении процедуры блок 1 переставляется на место блока 2, при втором – блок 2 на место блока 1.

Пример 15. Получить матрицу Е, переставив блоки элементов матрицы D. Требуемые перестановки блоков матрицы D показаны на рисунке.

PROGRAM PR15;

TYPE Mas =ARRAY [1..6, 1..6] OF REAL;

VAR E, D : Mas;

i, j : INTEGER;

PROCEDURE M (DS:Mas; i1,i2,j1,j2,is,js:INTEGER; VAR ES:Mas);

BEGIN

FOR i:=i1 TO i2 DO

FOR j:=j1 TO j2 DO

ES[i+is, j+js]:=DS[i, j];

END;

BEGIN

{Ввести элементы матрицы D (способы задания матриц приведены в примерах 1, 2)}

E:=D;

M (D, 1, 2, 1, 2, 0, 4, E);

M (D, 1, 2, 5, 6, 4, 0, E);

M (D, 5, 6, 5, 6, 0, -4, E);

M (D, 5, 6, 1, 2, -4, 0, E);

{Вывод на экран матрицы E (см. примеры 3, 4)};

END.

Пояснения к программе: Формальные параметры процедуры M аналогичны формальным параметрам процедуры S из примера 14.

Сначала элементам матрицы E присваиваются соответствующие элементы матрицы D. Затем для каждого переставляемого блока выполняется процедура M, но с различными значениями формальных параметров.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]