Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

2.4.3. Многомерные массивы

Если элементы массива сами являются массивами, получается структура данных, которая в программировании называется двумерным массивом. Описать ее можно так:

ARRAY [мин_значение_индекса1 .. макс_значение_индекса1]

OF ARRAY [мин_значение_индекса2 .. макс_значение_индекса2]

OF тип элементов

или

ARRAY [мин_значение_индекса1 .. макс_значение_индекса1, мин_значение_индекса2 .. макс_значение_индекса2]

OF тип элементов

Обе формы описания равносильны, но вторая употребляется чаще.

Например,

VARM: ARRAY [-10.. 10,1..50] OF REAL;

Обращаются к элементам двумерного массива, указывая не один, а два индекса: М[4][18] или М[4,18].

Если в обращении указать только один индекс, это будет расценено как имя одномерного массива.

Например, М[10] означает массив из 50 вещественных переменных: М[10,1], М[10,2],..., М[10,50].

Двумерные массивы принято называть матрицами. При этом считается, первый индекс обозначает номера строк, а второй - номера столбцов матрицы.

Например, если задан массив а:аггау[1..3,1..5], то его элементы располагаются следующим образом:

а[1,11

a[1,2]

а[1,3]

а[1,4]

а[1,5]

а[2,1]

а[2,2]

а[2,3]

а[2,4]

А[2,5]

а[3,1]

a[З,2]

а[3,3]

а[3,41

а[3,51

Если количество строк и столбцов одинаково, то матрица называется квадратной.

Например, матрица 3x3.

а[1,1

а[1,2]

A[l,3]

а[2,1

A[2,2]

а[2,31

а[3,1

а[3,2]

А[3,3]

Рассмотрим примеры использования двумерных массивов.

Пример. Ввести с клавиатуры элементы двумерного массива вещественных чисел.

program massiv;

var

М: array [1..10, 1..15] of real; i,j: integer;

begin

for j:=l to 10 do

for j:=l to 15 do

read(M[I,J]);

end.

Пример. Задана матрица. Определить сумму элементов в первой и последней строке, первом и последнем столбце, program Sum_elem_matrixl;

const Max_eleml=10;

Max_elem2 = 12;

type mas2 = array [1.. Max_eleml,l.. Max_elem2] of real; var m:mas2;

s:real;

I,j:integer;

begin

(*Ввод элементов в матрицу*) for i:=l to Max_eleml do

for j:=l to Max_elem2 do

read(m[i,j]); (*ввод элементов массива*) (*Суммирование*)

s:=0;

for i:=l to Max_eleml do

s:=s+m[i,l]+m[i, Max_elem2]; for j:=2 to Max_elem2-l do

s:=s+m[l,j]+m[Max_eleml,j];

(*Вывод суммы*)

writeln('Сумма равна ',s);

end.

Пример. Задана матрица. Определить сумму произведений элементов в каждой строке.

program Sum_elem_matrix2;

const Max_eleml=10; Max_elem2 = 12;

type mas2 = array[l.. Max_eleml,l.. Max_elem2] of real;

var m:mas2;

s:real; ij integer;

begin

for i:=l to Max_eleml do

for j:=l to Max_elem2 do

read(m[ij]); (*ввод элементов матрицы*) (""Суммирование*)

s:=0;

for i:=l to Max_eleml do begin

p:=l;

for j:=l to Max_elem2 do p:=p*m[i,j]; s:=s+p

end;

(*Вывод суммы*)

writeln('Сумма равна ',s);

end.

Пример. Задана квадратная матрица. Определить сумму произведений элементов в каждой из диагоналей, идущих сверху вниз и слева направо. Угловые элементы слева внизу и справа вверху также будем считать диагоналями из одного элемента. Для случая матрицы 4x4 диагонали показаны на рис. 2.1

Рис. 2.1

program Sum elem matrix3;

const Max_elem=10;

type mas2 = array[l.. Max_elem,l.. Max_elem] of real;

var m:mas2;

s,p:real; i,j,k:integer;

begin

for i:=l to Max elem do

for j:=l to Max_elem do

read(m[I,j]); (*ввод элементов матрицы*) ("Суммирование*)

s:=0;

for k:= Max elem downto 1 do , begin

p:=l; j:=1;

for i:=k to Max_elem do begin

p:=p*m[I,j]; j:=j+l;

end;

p:=1; i:=1;

for j:=k to Max_elem do

begin

p:=p*m[i,j];

i:=i+1;

end;

s+p;

end;

(*Вывод суммы*)

writeln('Сумма равна ',s);

end.

Подобным же образом описывают и используют трехмерные, четырехмерные и т.д. массивы. Обращаться к их элементам следует, указывая 3,4 и более индексов соответственно.