Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
В TurboPascal возможна организация массива массивов, а точнее элементами массива могут быть другие массивы. Подробнее остановимся на двумерных массивах (матрицах).
а11 а12 а13…а1n Матрица это таблица, состоящая из m-строк и n-столбцов,
а21 а22 а23…а2n где аij это элемент матрицы.
. . . . . . i указывает на принадлежность этого элемента к строке.
аm1 аm2 аm3…аmn j указывает на принадлежность этого элемента к столбцу.
Если в матрице число строк равно числу столбцов (n=m), то такая матрица называется квадратной.
Описание двумерных массивов:
<список идентификаторов> : array[<список диапазонов, через запятую>] of <тип элементов массива>;
var A:array[1..5,1..5] of integer;
Или var B,C:array[1..3,1..4] of real;
Доступ к элементу двумерного массива осуществляется с помощью указания двух индексов в квадратных скобках через запятую (номера строки и номера столбца). Каждый элемент массива имеет два индекса, из которых первый указывает номер строки матрицы, второй - номер столбца.
A[1,2]:=7
Ввод элементов массива |
Вывод элементов массива |
Для двумерных массивов допускается ввод как по строкам, так и по столбцам. Способ ввода матрицы определяется тем, какой индекс (строки или столбца) изменяется первым. I Ввод элементов по строкам for i:=1 to n do for j:=1 to m do read(A[i,j]); II Ввод элементов по столбцам for j:=1 to m do for i:=1 to n do read(A[i,j]); III Ввод элементов с сообщением for i:=1 to n do for j:=1 to m do begin write(A[,i,,,j,]=); readln(A[i,j]); end; |
Вывод матрицы обычно выполняется в общепринятом виде, то есть по строкам. I Вывод элементов массива в столбик for i:=1 to n do for j:=1 to m do writeln(A[i,j]:4); II Вывод элементов массива в виде матрицы (в общепринятом виде) for i:=1 to n do begin for j:=1 to m do write(A[i,j]:4); writeln; end; |
Часто при работе с двумерными массивами (матрицами) приходится оперировать с элементами, обладающими некоторыми признаками, в частности, связанными с положением элементов относительно диагоналей матрицы.
На главной диагонали: {A[i,j] ; i=j}
Ниже главной диагонали: {A[i,j] ; i>j}
Выше главной диагонали: {A[i,j] ; i<j}
На побочной диагонали: {A[i,j] ; i+j=n+1}
Ниже побочной диагонали: {A[i,j] ; i+j>n+1}
Выше побочной диагонали: {A[i,j] ; i+j<n+1}
Операции с матрицами.
Над матрицами определены следующие действия:
- сложение (вычитание) для подобных матриц
- умножение (стр.=стлб.)
- транспонирование (квадратная матрица)
- обратные матрицы.
Сложение (вычитание) матриц:
A = [aij] B = [bij] C = [cij]
i = 1,n j = 1,m
C = A +(-) B
for i := 1 to n do
for j := 1 to m do
c[i,j] := a[i,j] +(-) b[i,j]
Умножение матриц:
A = [aij] B = [bij] C = [cij]
i = 1,n j = 1,n
C = A * B
for i := 1 to n do
for j := 1 to n do
begin
c[i,j] := 0;
for k := 1 to n do
c[i,j] := c[i,j] + a[i,k]* b[k,j];
end;
Транспонирование матриц:
A = [aij] i,j = 1,n
Транспонирование замена строки на соответствующий столбец.
Используется 2 основных метода:
for i := 1 to n do
for j := 1 to n do
b[i,j] := a[j,i]
этот алгоритм наиболее прост но менее эффективен.
for i := 1 to n-1 do
for j := i+1 to n do
begin
x:= a[i,j];
a[i,j] := a[j,i];
a[j,i]:=x;
end.