Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Работа с матрицамиVar Var Анонимное описание Begin Begin Var Type Var Type Var Type Var Type Типизированное описание При этом создается пользовательский тип, задающий матрицу, а затем в разделе описания переменных описывается идентификатор – имя матрицы, а также две переменные - индексы элементов матрицы. Синтаксис типизированного описания: Type <название типа>=ARRAY[<тип индекса1>,<тип индекса2>] of <тип элемента>; Здесь: <название типа> - идентификатор Паскаля ARRAY - зарезервированное слово, обозначающее массив <тип индекса1>,<тип индекса2> - задают границы изменения номеров строк и столбцов соответственно. Могут быть любым порядковым типом Паскаля. Чаще всего используется интервальный целый тип. <тип элемента> - показывает, из величин какого типа состоит матрица. Любой тип Паскаля. Примеры описаний: matrix = ARRAY [-10..10,0..20] of real; I,j: integer; {индексы элементов матрицы} X: matrix; {идентификатор матрицы}
2. Const N=100; {максимальное количество строк} M=50; {максимальное количество столбцов} matrix = ARRAY [1..N,1..M] of real; I,j: integer; {индексы элементов матрицы} X: matrix; {идентификатор матрицы} 3. Описание матрицы как массива из массивов: Const N=100; {максимальное количество строк} M=50; {максимальное количество столбцов} Mass = ARRAY [1..M] of real; matrix = ARRAY [1..N] of mass;{массив из массивов} I,j: integer; {индексы элементов матрицы} X: matrix; {идентификатор матрицы} Последний вариант описания позволяет: 1. обращаться к строке матрицы как к одномерному массиву с помощью одного индекса, т.е. использовать операции для работы с целыми массивами; 2. передавать строки матрицы как параметры в процедуры и функции. Пример: Const N=100; {максимальное количество строк} M=50; {максимальное количество столбцов} Mass = ARRAY [1..M] of real; matrix = ARRAY [1..N] of mass;{массив из массивов} I,j: integer; {индексы элементов матрицы} X: matrix; {идентификатор матрицы} P:mass; … I:=2; P:=x[i];{операция присвоения элементов одного (x[i]) массива другому (P)} В последней строке в массив Р автоматически копируется вся 2-я строка матрицы. Если не использовать этот вариант описания матрицы, то тоже самое действие можно выполнить только с помощью цикла: … I:=2; For t:=1 to d do P[t]:=x[I,t]; {копируем элементы по одному} При этом пользовательский тип не создается, матрица и переменные - индексы элементов описываются в разделе описания переменных. Синтаксис такого описания: a: array [1..100,1..100] of real; I,j: integer; 2. const n=100; a: array [1..n,1..n] of real; I,j: integer; Предпочтительнее второй вариант. При необходимости в программе можно описать матрицу констант. При этом данные одной строки заключаются в круглые скобки, а весь набор данных – в дополнительные круглые скобки: const n=5; a: array[1..3,1..5] ofreal =((3.2,5,3.4,7,2),(5.8,2.7,3,8,1), (7.2,5,1.8,3,7.4)); В задачах с двумерными массивами используются определенные понятия и отношения. Эти понятия нужны, чтобы легче сориентироваться в условиях конкретной задачи, найти более простую схему решения. Некоторые определения: Матрица с одинаковым количеством строк и столбцов называется квадратной. Квадратная матрица, как обычный квадрат, имеет две диагонали: от верхнего левого в нижний правый – главная, от верхнего правого в нижний левый – побочная. В матрице можно провести линии, параллельные диагоналям. Их называют параллельными диагоналями или косыми линиями. При обработке матриц можно выделить такие алгоритмы: 1. Обработка элементов, удовлетворяющих определенным требованиям. 2. Преобразования матриц. 3. Формирования матриц. Особенность большого числа этих алгоритмов та же, что и при работе с с векторами – часто приходится организовывать выполнение одинаковых действий для всех элементов матрицы. Для этого чаще всего используются два счетных цикла, причем один является частью тела другого цикла. Параметры этих циклов являются индексами элементов матрицы: for i:=1 to K do for j:=1 to k do … Но в начале работы программы матрица пустая, т.е. ее элементы имеют значения по умолчанию. Для числовых типов Паскаля это значение 0. Поэтому для задач, использующих алгоритмы 1 и 2 необходимо заполнить матрицу значениями, отличными от нуля, а затем ее обрабатывать. Это действие называется
Дата добавления: 2014-03-11; просмотров: 291; Нарушение авторских прав Мы поможем в написании ваших работ! |