Двумерные массивы. В математике часто используют многомерные массивы, т.е. массивы массивов. Особенно широкое распространение получили двумерные массивы.

Презентация:



Advertisements
Похожие презентации
PROGRAM example1; CONST N = 8; M = 10; VAR a : ARRAY [ 1.. N, 1.. M ] of INTEGER; i, j : INTEGER; BEGIN FOR i := 1 TO N DO FOR j := 1 TO M DO a[ i, j ]
Advertisements

Массивы Материалы к урокам по программированию. МАССИВ это УПОРЯДОЧЕННАЯ последовательность данных ОДНОГО ТИПА. Массивы относятся к структурированным.
Автор: учитель информатики МКОУ Плесской средней общеобразовательной школы Юдин Андрей Борисович Часть 1.
Двумерные массивы Матрица. Содержание: Повторение Двумерный массив Диагональ матрицы Действия со строками и столбцами матрицы Действия со строками и столбцами.
Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений, объединенных.
Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
1 Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений,
Одномерные массивы Решение задач. Табличный способ организации данных Одномерные и двумерные массивы.
Двумерные массивы. Задачи обработки двумерных массивов.
1 Программирование на языке Паскаль Матрицы. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5] Двумерный массив можно представить.
Массивы Массив используется для обработки упорядоченного набора величин одного типа, обозначенного одним именем. Доступ к элементам массива осуществляется.
Язык программирования Pascal Массивы А. Жидков. Массивы Массив – поименованный набор однотипных элементов, каждый из которых имеет свой номер, (индекс).
const n=10; var a:array[1..n] of integer; i,j,c,b,k:integer; begin randomize; for i:=1 to n do begin a[i]:=random(11)-5;write(a[i]:5) end;writeln;
Двумерные массивы Решение задач из сборника «Задачи по программированию» под редакцией С. Окулова.
Массивы Вариант 1 Program upr1; Var s,a:real; I: integer; Begin S:=0; For I:=1 to 10 do Begin Writeln (введите очередное число'); Readln(a); S: =s+a; End;
Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
МАТРИЦЫ. var b: array [1..3,1..5] of real; i,j: integer; var a: array [1..4,1..4] of integer; i,j: integer; var C: array [1..4,1..7] of real; i,j: real;
3. Дана прямоугольная матрица, элементами которой являются целые числа. Поменять местами ее строки следующим образом: первую строку с последней, вторую.
Матрицы 1. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
Транксрипт:

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

В математике часто используют многомерные массивы, т.е. массивы массивов. Особенно широкое распространение получили двумерные массивы. Такие массивы условно можно изобразить в виде таблицы. С информацией, представленной в виде таблицы, мы очень часто встречаемся в различных областях знаний - экономике, статистике, математике, физике, химии и т.д. Каждый элемент таблицы имеет два индекса, значения которых позволяют указать местоположение элемента (его координаты). Матрица

В математике квадратные и прямоугольные таблицы часто называют матрицами. Первый индекс - это номер строки, который изменяется только с переходом на следующую строку; второй индекс – номер столбца. При решении экономических, статистических задач очень часто информация заносится в таблицы, в информатике каждая таблица это двумерный массив. А 11 A 12 A 13 А 14 A 21 А 22 A 23 A 24 А 31 А 32 А 33 А 34 номер строки номер столбца

Про матрицу, имеющую m строк и n столбцов, говорят, что она имеет размер m*n.m*n. Перемещаться по таблице мы можем, двигаясь по строке, в этом случае индекс строки изменяется медленнее, чем индекс столбца, и, соответственно, по столбцу (индекс столбца будет изменяться медленнее, чем индекс строки). При решении задач с использованием двумерных массивов во всех случаях (кроме некоторых частных) организуются вложенные циклы....

Перемещение по столбцу: for j:=1 to n do > внешний цикл, изменяется номер столбца... for i:=1 to m do > внутренний цикл, изменяется номер строки Перемещение по строке: for i:=1 to m do > внешний цикл, изменяется номер строки... for j:=1 to n do > внутренний цикл, изменяется номер столбца

Описание типа Объявим тип с именем mas3x4 и отнесем переменную с именем А к этому типу. type mas3x4 = array [1..3,1..4] of integer; var А: mas3x4; Переменная A является двумерным массивом, имеющим 3 строки и 4 столбца.

В качестве базового типа могут выступать не только стандартные типы real, integer, char и т.д., но и ранее описанный тип, т.е. двумерный массив мы можем рассматривать как массив массивов. type m3: array [1..4] of integer; m4: array [1..3] of m3; var a:m4; {двумерный массив} b:m3; {одномерный массив} Мы можем иначе объявить тип двумерный массив, если учтем то обстоятельство, что в описании m=array[k1..k2] of ;

Обращение к элементу массива типа m4 A[i][j], массив A имеет три элемента (строки), которые в свою очередь являются массивами. а[1] I =1=1 j=1 j=2 j=3 j=4 а[2] I =2 j=1 j=2 j=3 j=4 а[3] I =3 j=1 j=2 j=3 j=4

1. Заполнение двумерного массива: а) по строке, б) по столбцу. 2. Печать в виде таблицы. 3. Вычисление суммы элементов каждой строки и каждого столбца. 4. Сумма элементов массива. 5. Поиск максимального (минимального) элементов каждой строки (столбца) и их индексов. 6. Максимальный (минимальный) элемент массива. Базовые алгоритмы

1. Заполним двумерный массив, перемещаясь по строке или по столбцу а 11 а 12 а 13 а 14 а 24 а 23 а 22 а 21 а 31 а 32 а 34

а) Заполнение двумерного массива по строке Массив содержит 3 строки и 4 столбца, т.е. 3х4=12 элементов. Заполним значениями элементы первой строки: For j:= 1 to 4 do a[1,j]:=random(100); Для того, чтобы перейти к заполнению элементов второй строки, мы должны изменить индекс строки на 2 и получить элементы второй строки, и т.д. Индекс строк меняется медленнее, чем индекс столбца. Фрагмент программы для общего случая: for i:= 1 to 3 do for j:= 1 to 4 do a[i, j]:= random(100);

б) Заполнение двумерного массива по столбцу For j:=1 to 4 do {внешний цикл:j-индекс столбца; он меняется медленнее} for i:= 1 to 3 do a[i][j]:= random(100); Обратите внимание на порядок расположения индексов a [i] [i] [j]!

2. Печать содержимого двумерного массива в виде таблицы for i:=1 to 3 do begin for j:=1 to 4 do write(a[i,j], ); {печатаем элементы строки, не перемещая курсор} WriteLn; {перемещаем курсор на следующую строку} end;

3. Вычисление суммы элементов каждой строки/столбца Мы используем базовый алгоритм вычисления суммы элементов одномерного массива (у нас это будут строки) и повторим его столько раз, сколько имеется строк. Совет: чтобы не ошибиться, напишите сначала базовый алгоритм вычисления суммы для строки, а потом повторяйте его нужное количество раз. Никогда не разрывайте действия в алгоритмах, и вы избежите досадных ошибок. S:=0; for j:=1 to 4 do S:=S+а[индекс строки,j] { для того, чтобы перемещаться по строке мы меняем индекс j}

4. Вычисление суммы элементов всего двумерного массивы... S:=0; for i:=1 to 3 do for j:=1 to 4 do S:=S+ a [i, j]; теперь повторим алгоритм 3 раза for i:=1 to 3 do begin S:=0; for j:=1 to 4 do S:=S+ a [i, j]; WriteLn(S, i) End;

5. Задача поиска максимального (минимального) элемента и его индексов (считая, что элемент единственный) Задача сводится к повторению аналогичного базового алгоритма для одномерных массивов размерности mxn m раз, если мы ищем максимальный элемент каждой строки. а) для i-той строки алгоритм выглядит следующим образом: mах:=а[номер_строки,1 ]; for j:=2 to n do if а[номер_строки,j]>mах then mах:=а[номер_строки, j]

теперь повторим алгоритм m раз for i:=1 to m do begin max:=a[i, 1]; for j:=2 to n do if a[i, j]>max then max:=a[i, j] end;

for i:=1 to m do begin max:=a[i, 1]; ind_C:=1; {заносим номер 1 первый столбец} for j:=2 to n do if a[i, j]>max then begin max:=a[i, j]; ind_C:=j {сохраняем номер j-oгo столбца} end; writeln (max, I, строки=, mах, ind_C); End; Теперь запишем алгоритм для того случая, когда мы сохраняем индексы максимального элемента.

for j:=1 to n do {перемещаемся по столбцу} begin min:=a[1, j]; ind_L:=1; {сохраняем номер строки} for i:=2 to m do {начинаем движение по j-тому столбцу} if a[i, j]

6. Алгоритм поиска минимального элемента и его индексов для всего массива min:= a[1, 1]; ind_L:=1 ind_C:=1; for i:=1 to m do for j:=1 to n do if a[i, j]

Квадратные матрицы Объявим двумерный массив, количество строк которого совпадает с количеством столбцов. Type mas4x4=array[l..4,1..4] of integer; var a: mas4x4; Введем некоторые понятия: главная диагональ: элементы a 11, a 22, а З3, а 44 (индексы элементов, расположенных на главной диагонали равны (i=j)); побочная диагональ элементы а 41,а 32,а 23,а 14 (сумма индексов элементов на 1 больше размерности строки (или столбца), т.е. i+j=4+1, в общем виде i+j=n+1).

Побочная диагональ На рисунке главная диагональ закрашена сплошным красным цветом, побочная синим Главная диагональ

Элементы, расположенные над главной диагональю: Для индексов элементов, расположенных над главной диагональю, выполняется отношение ij; ij ij i=ji=j i=ji=j i=ji=j i=ji=j

Задания: 1) найти сумму элементов главной диагонали а 11 а 22 а 23 а 24 S:=0; for i:=1 to n do S:=S+a[i, i]; 2) найти минимальный элемент побочной диагонали: min:=a[1,n]; for i:=1 to n do if a[i, n + 1-i] < min then min:=a[i, n + 1-i];

Задачи для самостоятельного решения 1. Вычислить сумму элементов тех столбцов двумерного массива (3х4), первый элемент которых превосходит наперед заданное число а. 2. Найти обратное произведение, наибольших элементов тех строк двумерного массива (3х4), первый элемент которых отрицателен. 3. Найти сумму элементов того столбца двумерного массива, в котором расположится наибольший элемент (считаем, что он единственный). 4. В квадратной матрице размера 5х5 поменять местами столбец, содержащий наибольшее значение, со столбцом содержащим наименьшее значение (предполагаем, что эти элементы единственные).

5. Дан одномерный массив А(10) и двумерный массив В(3х4). В двумерном массиве заменить нулями те элементы, которые имеют нечетную сумму индексов. 6. Найти наибольшую сумму из сумм каждой строки двумерного массива. Если таких чисел несколько, вывести на экран номера строк, для которых сумма наибольшая. 7. Вычислить сумму тех столбцов двумерного массива размерностью 5х5, последний элемент которых равен элементу, стоящему на главной диагонали.

8. Дан двумерный массив А 5х5. Заполнить одномерный массив В по следующему правилу: если сумма очередной строки массива четная, то соответствующий элемент массива равен 2, иначе – элемент массива В равен Вычислить сумму тех строк двумерного массива размерностью 5х5, последний элемент которых равен элементу, стоящему на побочной диагонали. 10. Дан одномерный массив А(10) и двумерный массив В(3х4). В двумерном массиве заменить нулями те элементы, превосходят среднее арифметическое значение элементов массива А.