Similar presentations:
Двумерные массивы
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.