78.88K
Категория: ПрограммированиеПрограммирование

Двумерные массивы

1.

2.

Двумерным массивом или матрицей (таблицей)
будем называть такой порядок элементов в ней, когда
адрес некоторого элемента массива указан двумя
координатами — строкой и столбцом (колонкой).
Примерами двумерных массивов может служить
таблица Пифагора, значения элементов которой являются
произведением строки и столбца, таблица сложения
натуральных чисел от 1 до 9, расстановка фигур на
шахматной доске, где позиция каждой фигуры
определяется двумя координатами, одна из которых имеет
символьное обозначение, другая цифровое и т.д.

3.

В общем виде объявление двумерного массива выглядит
так:
имя массива: array[нижний_индекс1..верхний_индекс1,
нижний_индекс2..верхний_индекс2] of<тип>;
где
имя массива: — идентификатор массива;
array, of — зарезервированные слова (массив, из) —
ключевое слово, обозначающее массив;
[нижний_индекс1..верхний_индекс1,
нижний_индекс2..верхний_индекс2,] — целые числа,
определяющие диапазон изменения индексов(номеров) и,
следовательно, число элементов массива;
<тип> — тип элементов массива.

4.

Каждый элемент двумерного массива, в отличие от
одномерного, имеет не один, а два индекса,
показывающих его размещение в определённых строке
и столбце матрицы, сочетание которых и определяет
местонахождение элемента в массиве.
Матрица — математический объект,
записываемый в виде прямоугольной таблицы чисел и
допускающий алгебраические операции (сложение,
вычитание, умножение и др.) между ним и другими
подобными объектами.

5.

Вид массива: k:array [1..n,1..m]
где
n — количество строк,
m — количество столбцов в матрице.
Общее количество элементов массива
находится по формуле: n*m.
P: array[1..3,1..4] of integer;
Таким образом массив Р состоит из 12
элементов.

6.

Для того, чтобы получить доступ к элементу
массива, нужно указать:
имя массива;
индекс строки;
индекс столбца.
В дальнейшем будем считать, что для
двумерного массива первый индекс
соответствует номеру строки таблицы,
второй — номеру столбца.

7.

В Pascal есть возможность ввести свой
собственный тип переменных. Делается это с
помощью предложения описания типов type и тех
типов данных, которые уже есть в Pascal:
type имя_нового_типа = описание_типа;
Имя нового типа может быть любым, а его
описание строится с помощью встроенных типов
данных. В нашем примере имя нового типа — Аг,
описан он как целочисленный массив из девяти
элементов. Далее имя нового типа можно обычным
образом использовать в предложениях описания
переменных.

8.

Двумерные массивы могут быть представлены в
виде прямоугольной или квадратной матрицы.
Нулевой называется матрица, у которой
значения всех элементов равны 0 и алгоритм ее
формирования в памяти компьютера весьма прост
— всем элементам матрицы присваивается значение
0.
Единичной называется квадратная матрица, у
которой значения элементов главной диагонали
равны 1, остальные значения 0
Симметричной называется квадратная матрица,
у которой значения элементов равны относительно
главной диагонали.

9.

Рассмотрим три основных этапа работы с
массивами:
заполнение массива;
обработку массива;
вывод массива(результатов обработки
массива) на печать.

10.

Способы заполнения двумерного массива
Заполнение
массива с
клавиатуры
Заполнение
массива по
формуле
Заполнение
массива
случайными
числами
Заполнение
массива
константами

11.

Вывод элементов двумерного массива
Под выводом двумерного массива понимается вывод на
экран значений элементов массива. Эту операцию, как и
заполнение, тоже можно выполнить несколькими способами. Это
может быть вывод элементов в столбец, в строку (один за другим)
или используя форматный вывод. В задачах пишут примерно так:
«вывести массив на экран», «напечатать элементы массива в
строку», «вывести на экран элементы массива способом
форматированного вывода». Как мы знаем, вывод на экран
осуществляется операторами writeln () и write (). Обычно
двумерный массив удобно выводить построчно.

12.

Примеры типовых алгоритмов обработки двумерных массивов
• Типовые алгоритмы обработки массивов:
• суммирование элементов массивов;
• умножение элементов массивов;
• удаление элементов массивов;
• поиск минимума и максимума;
• включение элемента в массив;
• преобразование, сортировка и т.д.
Задач, связанных с применение массивов встречается очень много
и все их рассмотреть невозможно. Рассмотрим наиболее
распространенные алгоритмы решения типовых задач.

13.

14.

program s_stolbsov;
var a: array [1..10, 1..10] of integer; i, j, n, m: integer; summa_st:
array [1.10] of integer;
begin
write ('Введите количество строк и столбцов');
readln (n, m);
writeln ('Введите элементы массива:');
for i:=1to n do for j:=1 to m do
begin
readln (a[i, j]) end;
for j:=1 to m do
begin summa_st[j]:=0; for i:=l to n do summa_st[j] := summa_st
[j]+a[i, j]; end;
writeln ('Суммы элементов столбцов:');
for j:=1 to m do writeln (‘summa_st[‘,j’]’, summa_st[j])
end.

15.

Сложение двух или нескольких матриц возможно в
том случае, если складываемые матрицы имеют
одинаковый размер, т.е. равное количество строк и
столбцов. Для получения матрицы сумм двух или
более матриц, необходимо сложить значения
элементов,
имеющих
одинаковые
индексы.
Рассмотрим этот алгоритм на примере сложения двух
матриц a[5,5] и b [5,5], результат запишем в массив
c[5,5]. Массивы заполним целыми числами,
лежащими в диапазоне от -8 до 7.

16.

program sums_massiv;
Const n=5; m=5;
var a,b,c :array[1..10,1..10] of integer; i,j
:integer;
begin
randomize; {Формирование исходной
матрицы "A"}
writeLn ('Исходная матрица "A"');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(16)-8;
Write(a[i,j]:4);
end;
writeLn
end;
{Формирование исходной матрицы
"B"}
writeLn('Исходная матрица "B"');
for i:=1 to m do
begin
for j:=1 to m do
begin
b[i,j]:= random(16)-8;
write(b[i,j]:4);
end;
writeLn
end; {Сумма матриц}
writeLn ('Сумма матриц');
for i:=1 to m do
begin
for j:=1 to m do
begin
c[i,j]:=a[i,j]+b[i,j];
write(a[i,j]:4);
end;
writeLn
end;
end.

17.

При решении многих задач возникает необходимость
установить, содержит ли массив определенную информацию
или нет. Для организации поиска в массиве могут быть
использованы различные алгоритмы. Наиболее простой —
это алгоритм перебора. Поиск осуществляется
последовательным сравнением элементов массива с
образцом до тех пор, пока не будет найден элемент равный
образцу, или не будут проверены все элементы. Алгоритм
простого перебора применяется, если элементы массива не
упорядочены.

18.

Алгоритм поиска максимального(минимального)
элемента в неупорядоченном массиве довольно очевиден:
делается предположение, что первый элемент массива
является минимальным (максимальным), затем остальные
элементы массива последовательно сравниваются с этими
элементами. Если во время очередной проверки
обнаруживается, что проверяемый элемент меньше(больше)
принятого за минимальный (максимальный), то этот элемент
принимается за минимальный(максимальный) и
продолжается проверка оставшихся элементов.
Задача
• Найти наибольшее и наименьшее значение элементов
на главной диагонали двумерного массива(данный
двумерный массив является квадратной матрицей)

19.

program max_min;
var a:array[1..5,1..5] of integer;
i,j, max, min:integer;
Begin
randomize;
for i:=1 to 5 do
Begin
for j:=1 to 5 do
begin a[i,j]:=random(11);
write(a[i,j]:3,' ');
end;
writeln;
end;
max:=a[1,1];
min:=a[1,1];
for i:=1 to 5 do
Begin
if a[i,i]>max then max:=a[i,i];
if a[i,i]<min then min:=a[i,i];
end;
writeln('max=',max,'min=',min);
readln
end.
English     Русский Правила