Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция6-MATR.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.14 Mб
Скачать

Тема 8 Двумерные массивы данных

Двумерные массивы данных (матрицы) задаются по тем же правилам, что и одномерные массивы.

1.Описание двумерных массивов

1). VAR

A = array[1..5,1..3] of integer;

B = array[1..4,1..6] of real;

2). Type

Atype = Array[1..5,1..3] of integer;

Btype = array[1..4,1..6] of real;

Var

A : Atype; B : Btype;

3). Type

mass = array[1..5] of real; {5 элем строки}

matr = array[1..4] of mass; {4 строки по 5 эл}

Var X, y, z: matr; {матрицы 4х5}

S: mass; {одномерный массив}

Матpица pассматривается как совокупность одномерных массивов.

mass- это одномерный массив из 5 элементов.

matr- это совокупность 4 массивов по 5 элементов в каждом.

При описании матриц a и b пользовательским типом Type для переприсваивания значения строк матрицы достаточно написать следующие операторы:

A[1]:= A[3];

B[3]:= A[2];

2. Ввод элементов матрицы

Ввод матрицы A[m, n].

1. Ввод матрицы с клавиатуры:

1). Ввод матрицы по строкам

FOR i:=1 TO n DO

FOR j:=1 TO m DO

READ (A[i, j]);

2). Ввод матрицы по столбцам

1. FOR j:=1 TO 3 DO

FOR i:=1 TO 5 DO

READ (A[i, j]);

2. Ввод матрицы типизированной константой:

3). Type

matr = array [1..3, 1..3] of integer;

CONST

A: matr = ((1, 1, 1),(2, 2, 2),(3, 3, 3));

B: array[1..3,1..2] of real= ((2.1, 4.2),

(1.5, 5.3),

(3.0, 2.0));

Все компоненты массива должны быть заполнены.

Матрица заполняется по строкам

3. Ввод матрицы из файла:

3. Вывод элементов матрицы

1. Вывод элементов матрицы на экран

1). по строкам

FOR i:=1 TO 5 DO

begin

FOR j:=1 TO 3 DO

WRITE (' ', A[i, j]:3);

WRITELN;

end;

1). по столбцам

FOR j:=1 TO 3 DO

begin

FOR i:=1 TO 5 DO

WRITE (' ',A[i, j]:3);

WRITELN;

end;

Обработка двумерных массивов.

Примеры: (фрагменты программ)

Сформировать матрицу:

n = m =3

1). Найти первый по возрастанию строк

элемент, принимающий максимальное значение, зафиксировать его координаты.

max:=a[1, 1]; p:= 1; q:= 1; for i:=1 to 6 do for j:=1 to 4 do if a[i, j] > max then begin max:= a[i, j]; {это первый max } p:= i; q:= j; {индексы элемента} end; Если поставить знак >= , то получим координаты последнего max (если в матрице несколько одинаковых max чисел)

2).Поменять местами 1-ю строку со строкой, содержащей max элемент матрицы.

p – номер строки максимального элемента

for j:=1 to 4 do

begin

buf:= a[1, j]; a[1, j]:=a[p, j]; a[p, j]:= buf; end;

3). Поменять местами 2-й столбец со столбцом, содержащим max элемент матрицы.

q – номер столбца максимального элемента

for i:=1 to 6 do

begin

buf:= a[i, 2]; a[i, 2]:=a[i, q]; a[i, q]:= buf; end;

4).Найти максимальные элементы в каждой строке матрицы A(4x5).

for i:=1 to 4 do

begin { фиксируем строку }

max:=a[i,1]; {первый элемент строки принимаем за max}

for j:=1 to 5 do

if a[i, j]> max then max:=a[i, j];

writeln('строка ', i ,': max=',max);

end;

5).Найти максимальные элементы в каждом столбце матрицы A(4x5), зафиксировать их координаты.

for j:=1 to 5 do

begin { фиксируем столбец }

max:=a[1, j]; {первый элемент столбца принимаем за max}

for i:=1 to 4 do

if a[i, j]> max then begin

max:=a[i, j]; p:=i; q:=j

end;

writeln(‘a[‘, p, ‘,’, q, ‘]= max=',max);

end;

6).В каждой строке матрицы А[4x5] определить количество элементов, значения которых находятся в интервале [2;9]. Распечатать эти элементы.

for i:=1 to 4 do

Begin { фиксируем строку }

k:=0; for j:=1 to 5 do

if (a[i, j] >= 2) AND (a[i, j] <= 9) then

begin k:=k + 1; writeln(a[i, j]); end; writeln(‘в строке ‘, i , ‘ ‘, k, ‘ элементов’);

End;