Скачать 312.49 Kb.
|
Основные свойства квадратных матрицЕсли количество строк и столбцов в двумерном массиве одинаковое, то такой массив называется квадратным. Например, при n=3: a11 a12 a13 a21 a22 a23 a31 a32 a33 1. Квадратные матрицы имеют главную и побочные диагонали. Например, для матрицы А на главной диагонали лежат элементы 1, 5 и 9, а на побочной – 3, 5 и 7. Если: i=j – элементы расположены на главной диагонали; i>j – элементы расположены ниже главной диагонали; i<j – элементы расположены выше главной диагонали; i+j-1=n – элементы расположены на побочной диагонали. Элемент матрицы на побочной диагонали в общем виде будет иметь адрес A[i,N+1–i]; i+j-1 i+j-1>n – элементы расположены под побочной диагональю. 2. Квадратная матрица, у которой все элементы, исключая элементы главной диагонали, равны нулю, называется диагональной матрицей: . 3. Диагональная матрица, у которой все элементы, стоящие на главной диагонали, равны 1, называется единичной матрицей. 4. Если в матрице A(n,m) поменять местами строки и столбцы, то получится матрица AT(n,m), которая называется транспонированной матрицей: . Типовые задачи обработки двумерных массивовПрограммы большинства матричных задач строятся на основе вложенных циклов. Обычно внешний цикл работает по строкам матрицы, а внутренний цикл – по столбцам матрицы. Задачи, использующие двумерные массивы:
Основные действия, которые можно выполнять над матрицами
Пример 11.23. Ввести целочисленный массив размерности NхN из файла и вывести на экран сам массив и сумму всех его элементов. Program summa; Const Nmax=50; Type mas=Array[1..Nmax,1..Nmax] Of Integer; Var a:mas; i,j,sum,N:Integer; f:text; Begin assign(f,’f.dat’); reset(f); ReadLn(N); {Ввод размерности массива} {Ввод элементов и суммирование} sum:=0; For i:=1 To N Do For j:=1 To N Do Begin Read(f,a[i,j]); sum:=sum+a[i,j]; End; Close(f) {Вывод элементов массива} WriteLn(‘Массив’); For i:=1 To N Do Begin For j:=1 To N Do Write(a[i,j]); WriteLn End; {Вывод суммы элементов массива} Writeln(‘Сумма=’,sum); End. Пример 11.24. В матрице размерностью 10х10 поменять местами столбцы с номерами k и n. Значения элементов массива вводятся из файла f.dat. Program replace_matr; Type mas=Array[1..10,1..10] Of Integer; Var a:mas; k,n,j,i,b:Integer; f:Text; Begin ReadLn(k); {ввод номеров столбцов} ReadLn(n); {Ввод элементов из файла} Assign(f,’f.dat’); Reset(f); for i:=1 to 10 do for j:=1 to 10 do Read(f,a[i,j]); Close(f) {Столбцы с номерами k и n меняются местами} for i:=1 to 10 do begin b:=a[i,k]; a[i,k]:=a[i,n]; a[i,n]:=b end; {Вывод элементов матрицы} For i:=1 to 10 do Begin For j:=1 to 10 do Write(a[i,j]); WriteLn End; End. Пример 11.25. В матрице размерностью NхN (N вводится с клавиатуры) найти сумму элементов, стоящих выше главной диагонали. Матрица заполняется случайными числами в диапазоне от 1 до 100.. Const NMax=10; Var A : Array[1..NMax,1..NMax] Of Integer; I, K : Byte; S : Integer; Begin Write(‘N=’); ReadLn(N); Randomize; S:=0; {заполнение и вывод матрицы; вычисление суммы элементов выше главной диагонали} For I:=1 To N Do Begin For K:=1 To N Do Begin A[I,K]:=Random(101)+1; Write(A[I,K]:6); If K>I Then S:=S+A[I,K] End; Writeln End; Writeln('Сумма элементов выше главной диагонали равна ',S) End. Другой способ решения задачи. Ввод и вывод элементов матрицы выполнить в начале программы, а нахождение искомой суммы реализовать следующим образом: ... S:=0; For I:=1 To N Do For K:=I+1 To N Do S:=S+A[I,K]; ... Пример 11.26. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали. Program Obmen; Var N, I, J, Max,Ind, Vsp : Integer;A : Array [1..15, 1..15] Of Integer; Begin WRITE('Введите количество элементов в массиве: '); READLN(N); FOR I := 1 TO N DO FOR J := 1 TO N DO Begin WRITE('A[', I, ',', J, '] '); READLN(A[I, J]) End; FOR I := 1 TO N DO Begin Max := A[I, 1]; Ind := 1; FOR J := 2 TO N DO IF A[I, J] > Max THEN Begin Max := A[I, J]; Ind := J End; Vsp := A[I, I]; A[I, I] := A[I, Ind]; A[I, Ind] := Vsp End; FOR I := 1 TO N DO Begin FOR J := 1 TO N Do Write(A[I, J] : 6); WriteLn; End; End. Для работы с двумерными массивами желательно подготовить программу-шаблон, которая включает ввод данных из файла и вывод элементов двумерного массива на экран (можно в файл). Размеры двумерного массива можно также вводить из файла. Задание. Матрица смежности – типа найти расстояние Действия над массивами как единым целымЕдинственное действие, которое можно выполнять над массивами целиком, но только при условии, что массивы описание массивов полностью совпадает, – это присваивание. Пример 11.27. Выполнение операции присваивания массивов. 1) Var p,q:Array[1..15,1..10] Of Real; ... p:=q; ... В этом случае все элементы массива p станут равными элементам массива q. 2) Type vec=Array[1..10] Of real; Var p:Array[1..15] Of vec; q:Array [1..15,1..10] Of real; ... p:=q; ... В данном случае будет выдана ошибка несоответствия типов, так как описание массивов не совпадает, несмотря на то, что размеры и базовые типы массивов совпадают. |
Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются... | Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например, оператор | ||
Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Их можно представить в виде прямоугольной... | Цель урока: систематизация и развитие знаний по использованию массивов в программах на Паскале | ||
Лабораторная работа №6 (статические массивы, знакомство с графическим режимом. Возможно будет изменена) 49 | На контрольной работе необходимо письменно ответить на два теоретических вопроса и решить 1 задачу | ||
Определение: Двумерный массив- это одномерный массив, у которого типом компоненты является одномерный массив | ... | ||
... | Двумерные массивы условно можно изобразить в виде таблицы ( матрицы). С информацией, представленной в виде таблицы, мы очень часто... |
Поиск Главная страница   Заполнение бланков   Бланки   Договоры   Документы    |