Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Транспонирование матриц.
Двумерные массивы. Квадратные матрицы.
В квадратной матрице количество строк и столбцов - одинаково и равно n. Любая квадратная матрица имеет элементы главной и побочной диагонали. Диагональные элементы главной диагонали: a[1, 1]; a[2, 2]; a[3, 3]; ….; a[n, n]. Элементами побочной диагонали являются: a[1, n]; a[2, n-1]; a[3, n-2]; …; a[n-1, 2]; a[n, 1]. В качестве примера рассмотрим задачу формирования квадратной матрицы порядка n случайными числами и нахождения произведения элементов главной диагонали и суммы элементов ниже побочной диагонали. Отметим элементы главной диагонали для нахождения их произведения. И элементы ниже побочной диагонали для поиска их суммы.
Program Prpizv_Summa; Const n=9; Var a: array [1..n, 1..n] of integer; I, j, s, p: integer; Begin randomize; for i: =1 to n do Begin for j: =1 to n do Begin a[ i, j ]: = random (101); write (a[ i, j ]: 6); end; writeln; End p: =1; for i: =1 to n do p: =p*a[ i, i ]; s: =0; for i: =2 to n do for j: =n-i+2 to n do s: =s+a[ i, j ]; writeln (p, s); Readln; End.
Транспонирование матриц.
В данном алгоритме транспонирования матрицы необходимо заменить строки матрицы ее столбцами, а столбцы - строками, т.е. вычислить b[ i, j ]: =a[ j, i ], где i=1, …, n; j=1, …, m. Матрица А
Матрица B
Program Prpizv_Summa; Const n=5; m=7; Var i, j: integer; a: array [1..n, 1..m] of integer; b: array [1..m, 1..n] of integer; Begin randomize; writeln (‘Сформирована матрица A’); for i: =1 to n do Begin for j: =1 to m do Begin a[ i, j ]: = random (31)-15; write (a[ i, j ]: 6); end; writeln (‘’); end; for i: =1 to n do for j: =1 to m do b[ j, i ]: =a[ i, j ]; writeln (‘Получена транспонированная матрица B’); for i: =1 to m do Begin for j: =1 to n do write (b[ i, j ]: 6); writeln (‘’); end; Readln; End.
Транспонированную матрицу можно получить в исходном массиве А. Для квадратной матрицы n*n для этого необходимо поменять местами каждый элемент верхнего треугольника с соответствующим элементом нижнего (диагональные элементы переставлять не нужно). При этом для каждой строки нужно выполнять перестановку для элементов, расположенных правее главной диагонали, с элементами соответствующего столбца, расположенными ниже главной диагонали. При перестановке используем вспомогательную переменную tmp, помещая в нее для временного хранения один из переставляемых элементов, чтобы не потерять его значение.
Program Transpon; Const n=9; Var i, j, tmp: integer; a: array [1..n, 1..n] of integer; Begin randomize; writeln (‘Сформирована квадратная матрица A’); for i: =1 to n do Begin for j: = 1 to n do Begin a[ i, j ]: = random (101)-50; write (a[ i, j ]: 6); end; writeln (‘’); end; for i: = 1 to n-1 do for j: = i+1 to n do Begin tmp: = a[ i, j ]; a[ i, j ]: = a[ j, i ]; a[ j, i ]: = tmp; end; writeln (‘Получена транспонированная матрица ’); for i: = 1 to n do Begin for j: = 1 to n do write (a[ i, j ]: 6); writeln (‘’); end; Readln; End.
|