Переставить блоки вещественной квадратной матрицы - Turbo Pascal
Формулировка задачи:
Помогите пожалуйста очень надо!!
Пусть дана вещественные Матрица порядка 2n. Получите новую матрицу , переставляя ее блоки размером n так, как показано на рис. Для обмена четырех заданных фрагментов матрицы напишите функцию.
Решение задачи: «Переставить блоки вещественной квадратной матрицы»
textual
Листинг программы
procedure Exchange(var a,b:array of array of real); var tmp:double; i,j:integer; begin for j:=0 to n-1 do for j:=0 to n-1 do begin tmp:=matrix[i,j]; matrix[i,j]:=matrix[i,j+n]; matrix[i,j+n]:=matrix[i+n,j+n]; matrix[i+n,j+n]:=matrix[i+n,j]; matrix[i+n,j]:=tmp; end; end;
Объяснение кода листинга программы
- Входные данные: массив
a
иb
- это два массива, которые представляют собой вещественные квадратные матрицы размеромn x n
. - В переменной
tmp
хранится временное значение, которое будет использоваться для обмена значениями. - Два вложенных цикла
for
используются для прохода по всем элементам матрицы. Внешний цикл выполняется по строкам, а внутренний - по столбцам. - Значение
tmp
инициализируется значением элемента матрицыmatrix[i,j]
. - Значение
tmp
затем меняется местами с элементомmatrix[i,j+n]
с помощью операции присваивания. - Значение
tmp
затем меняется местами с элементомmatrix[i+n,j+n]
с помощью операции присваивания. - Значение
tmp
затем меняется местами с элементомmatrix[i+n,j]
с помощью операции присваивания. - Циклы завершаются.
- Результат: матрица
matrix
будет переставлена блоками по диагонали.