Двумерные массивы
- Рубрика: Презентации / Презентации по Информатике
- Просмотров: 345
Презентация "Двумерные массивы" онлайн бесплатно на сайте электронных школьных учебников edulib.ru
Автор: учитель информатики МКОУ Плесской средней общеобразовательной школы Юдин Андрей Борисович Часть 1
В математике таблицы чисел, состоящие из строк и столбцов называются матрицами и записываются в круглых скобках. Двумерный массив. Матрицы 1
Двумерный массив. Применение. 2 Использование двумерных массивов для построения поверхностей.
Двумерный массив. Определение. 3 Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива). Способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется двумерным массивом
Двумерный массив. Определение 4 1 2 3 4 5 6 1 2 3 В математике: В Pascal: Ai;j A[i,j] A[2,4] A[1,2] A[3,5] 7 4 2 7 5 4 4 1 3 8 9 9 1 5 0 6 0 0
Двумерный массив. Описание 5 Самый простой способ описания массива a : array [1..10, 1..20] of real; Имя массива Количество строк Количество столбцов Тип данных в массиве a: array [1..10] of array [1.. 20] of real; Описание как массив массивов: Одномерный массив Каждый элемент которого в свою очередь является одномерным массивом
Двумерный массив. Описание 6 Const m=10; n =20; Var a : array [1.. m, 1.. n] of integer; Количество строк и столбцов через константу. В разделе констант указываем число строк и столбцов type t=array[1..m,1..n] of integer; var a : t; Определением нового типа данных. Определяем пользовательский тип , двумерный массив
Двумерный массив. Описание 7 const a: array[1..3,1..5] of integer = ((3,-2,1,4,3), (-5,-9,0,3,7), (-1,2,1,-4,0)); Массив констант. Непосредственно в программе указываем значения элементов массива.
For i := 1 to 3 do begin For j := 1 to 4 do begin write('A[ ', i, ', ',j, ']= '); readln(a[i, j]) end; Двумерный массив. Заполнение 8 Заполнение массива с клавиатуры: Цикл отвечающий за перебор строк. Берем первую, вторую и так далее строки Цикл отвечающий за перебор ячеек в каждой строке. end;
Двумерный массив. Заполнение 9 Блок-схема заполнения с клавиатуры: Цикл отвечающий за перебор строк. (Внешний цикл) Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)
Двумерный массив. Заполнение 10 Заполнение массива случайными числами: For i := 1 to 3 do begin For j := 1 to 4 do begin a[i, j] := random(21) - 10; write(a[i, j]:6); end; writeln; end; Write без LN выводит элементы массива в строку Когда i-я строка закончилась, пишем пустой WriteLN для перехода на новую строку
Двумерный массив. Заполнение 11 j , 1, N Вывод a i , j i , 1, N a i , j= случайное[-10;10] Цикл отвечающий за перебор строк. (Внешний цикл) Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)
Двумерный массив. Заполнение 12 Заполнение массива по правилу: For i := 1 to 3 do begin For j := 1 to 4 do begin a[i, j] :=ФОРМУЛА; write(a[i, j]:6); end; writeln; end; Заполнить произвольный массив размером N x N (N
Двумерный массив. Заполнение 13 a11 a22 a23 a32 a33 a14 a41 a44 1 2 3 4 1 2 3 4 Главная диагональ: I=J Побочная диагональ: I+J=N+1 Заполнить произвольный массив размером N x N (N
Двумерный массив. Заполнение 14 Фрагмент блок-схемы задачи заполнения побочной диагонали единицами j , 1, N Вывод a i , j i , 1, N a i , j= 0 Ввод N i+j=N+1 a i , j= 1 Да Нет
Двумерный массив. Заполнение 15 a11 a22 a33 a44 a55 Удовлетворяет неравенству i < j Удовлетворяет неравенству i > j 1 2 3 4 5 1 2 3 4 5
Двумерный массив. Заполнение 16 a15 a24 a33 a42 a51 Удовлетворяет неравенству i+jn+1 1 2 3 4 5 1 2 3 4 5
Двумерный массив. Заполнение 17 a11 a22 a33 a44 a55 1 2 3 4 5 1 2 3 4 5 a42 a51 a24 a15 (i+jj) (i+jj) Системы неравенств
Двумерный массив. Сумма элементов 19 Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти сумму элементов массива лежащих на главной диагонали. Один или два прохода по массиву? Первый способ. Один проход по массиву ClrScr; Write('ВВеди N = ');Readln(n); s:=0; For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(20)-10; write(a[i,j]:4); if (i=j) then s:=s+ a[i,j]; end; writeln; end; writeln('Сумма элементов =',s:5); Заполняем случайными числами и выводим на экран И сразу же находим сумму элементов лежащих на главной диагонали Второй способ. Два прохода по массиву Write(' ВВеди N = ');Readln(n); s:=0; For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(20)-10; write(a[i,j]:4); end; writeln; end; For i:=1 to n do For j:=1 to n do if (i=j) then s:=s+ a[i,j]; writeln('Сумма элементов =',s:5); Первый проход. Заполняем массив и выводим его на экран Второй проход. Находим сумму. Замечание. Если нужно что то сделать только с главной диагональю, то можно обойтись без вложенных циклов For i:=1 to n do s:=s+ a[i,i];
Двумерный массив. Сумма элементов 20 j , 1, N Вывод a i , j i , 1, N a i , j= случайное[-10;10] Ввод N S = 0 i = j S =S + a i , j Вывод S Да Нет Нахождение суммы элементов на главной диагонали за один проход по массиву
Двумерный массив. Сумма элементов 21 1 Нахождение суммы элементов на главной диагонали за два прохода
Двумерный массив. Сумма элементов 22 i , 1, N S =S + a i , i Вывод S Нахождение суммы элементов на главной диагонали за два прохода (в случае когда речь идет только о главной диагонали и остальной массив не нужен)
Двумерный массив. Минимальный элемент 23 Один или два прохода по массиву? Рассуждение второе. Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти минимальный элемент лежащий на главной диагонали.
Двумерный массив. Минимальный элемент 24 Стандартный способ без анализа задачи Write('ВВеди N = ');Readln(n); For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(21)-10; write(a[i,j]:4); end; Writeln; end; m:=a[1,1]; For i:=1 to n do For j:=1 to n do if (a[i,j]
Двумерный массив. Минимальный элемент 25 Если немного по рассуждать, можно увидеть, что самое «маленькое» число, которое может выдать генератор случайных чисел это 10. Все остальные числа будут меньше его. Т.к. в условии задачи нам точно задан интервал [-10 ; 10]. С анализом исходных данных задачи Write('ВВеди N = ');Readln(n); m:=10; For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(21)-10; write(a[i,j]:4); if (a[i,j]
Двумерный массив . Максимальный элемент в строке 26 Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти максимальный элемент в каждой строке.
Двумерный массив. Максимальный элемент в строке 27 Write('ВВеди N = ');Readln(n); For i:=1 to n do begin max:=-10; For j:=1 to n do begin a[i,j]:=random(21)-10; write(a[i,j]:4); if (a[i,j]>max) then max:= a[i,j]; end; write(' MAx = ',max:5); writeln; end; Решение в один проход, с анализом задачи Предполагаем, что самое большое число - 10, левая граница исходного интервала. Перебираем строки Заполняем элемент массива и выводим его на экран Если в строке встречается элемент больше максимального, то он становится максимальным Выводим наибольший элемент в строке
Двумерный массив. Максимальный элемент в строке 28 j , 1, N Вывод a i , j i , 1, N a i , j= случайное[-10;10] Ввод N Мах = - 10 a i , j > Max Max = a i , j Вывод Max Да Нет Нахождение максимального элемента в каждой строке в один проход Конец
Двумерный массив. Максимальный элемент в строке 29 ClrScr; Write(‘Введи N = ');Readln(n); For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(21)-10; write(a[i,j]:4); end; writeln; end; Заполняем массив и выводим его на экран For i:=1 to n do begin max:=a[i,1]; For j:=2 to n do if (a[i,j]>max) then max:= a[i,j]; writeln('В ',i,' строке max = ',max:5); end; Перебираем строки Предполагаем, что наибольший элемент в каждой строке стоит на первом месте Идем по строке и если находим элемент больший чем максимальный, то он становится максимальным Вывод наибольшего элемента в строке Стандартным способом, первый проход – заполнение, второй проход – поиск максимального в строках