Презентация "Двумерные массивы"
Подписи к слайдам:
- Двумерные
- массивы
- Автор: учитель информатики МКОУ Плесской средней общеобразовательной школы
- Юдин Андрей Борисович
- Часть 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]
- Двумерный массив. Описание 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
- j , 1, N
- Ввод a i , j
- i , 1, N
- Блок-схема заполнения с клавиатуры:
- Цикл отвечающий за перебор строк. (Внешний цикл)
- Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)
- Двумерный массив. Заполнение 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<10) по следующему правилу:
- 11111
- 22222
- 33333
- 44444
- 55555
- ClrScr;
- Write('ВВеди N = ');Readln(n);
- For i:=1 to n do begin
- For j:=1 to n do begin
- a[i,j]:=i;
- write(a[i,j]:4);
- end;
- writeln;
- end;
- Значение элемента в каждой ячейке строки равно номеру строки.
- Двумерный массив. Заполнение 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<10) по следующему правилу:
- 00001
- 00010
- 00100
- 01000
- 10000
- ClrScr;
- Write('ВВеди N = ');Readln(n);
- For i:=1 to n do begin
- For j:=1 to n do begin
- if (i+j = n+1) then a[i,j]:=1
- else a[i,j]:=0;
- write(a[i,j]);
- end;
- writeln;
- end;
- Если побочная диагональ то заполнить ячейку 1 во всех остальных случаях 0
- Двумерный массив. Заполнение 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+j<n+1
- Удовлетворяет неравенству
- i+j>n+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+j<n+1) And (i<j)
- (i+j>n+1) And (i<j)
- (i+j>n+1) And (i>j)
- (i+j<n+1) And (i>j)
- Системы неравенств
- Двумерный массив. Заполнение 18
- Заполнить произвольный массив размером N x N (N<10) по следующему правилу:
- 00001
- 00011
- 00111
- 00011
- 00001
- Это пересечение двух множеств. Элементы лежащие на и ниже побочной диагонали и элементы лежащие на и выше главной диагонали
- Write('ВВеди N = '); Readln(n);
- For i:=1 to n do begin
- For j:=1 to n do begin
- if (i+j>=n+1) and (i<=j) then a[i,j]:=1
- else a[i,j]:=0;
- write(a[i,j]:2);
- end;
- writeln;
- end;
- Проверяем условие принадлежности данному множеству
- Двумерный массив. Сумма элементов 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
- j , 1, N
- Вывод a i , j
- i , 1, N
- a i , j=
- случайное[-10;10]
- Ввод N
- S = 0
- 1
- 1
- j , 1, N
- i , 1, N
- i = j
- S =S + a i , j
- Вывод S
- Да
- Нет
- Нахождение суммы элементов на главной диагонали за два прохода
- Двумерный массив. Сумма элементов 22
- j , 1, N
- Вывод a i , j
- i , 1, N
- a i , j=
- случайное[-10;10]
- Ввод N
- S = 0
- 1
- 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]<m) and (i=j) then m:=a[i,j];
- writeln(' Минимальный элемент =',m:5);
- Заполняем массив случайными числами
- Предполагаем, что минимальный элемент стоит в левом верхнем углу
- Если встречается элемент меньше m, и он лежит на главной диагонали, то он становится минимальным
- Замечание.
- В данном случае можно не бегать по всему
- массиву а пройти только по главной диагонали, обойдясь без вложенных циклов.
- m:=a[1,1];
- For i:=2 to n do
- if (a[i,i]<m) then m:=a[i,i];
- Двумерный массив. Минимальный элемент 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]<m) and (i=j) then m:=a[i,j];
- end;
- Writeln;
- end;
- writeln(' Минимальный элемент лежащий на главной диагонали =',m:5);
- Предполагаем, что самое маленькое число 10, правая граница исходного интервала.
- Заполняем, выводим на экран и сразу проверяем на минимальность в главной диагонали.
- Двумерный массив . Максимальный элемент в строке 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;
- Перебираем строки
- Предполагаем, что наибольший элемент в каждой строке стоит на первом месте
- Идем по строке и если находим элемент больший чем максимальный, то он становится максимальным
- Вывод наибольшего элемента в строке
- Стандартным способом,
- первый проход – заполнение,
- второй проход – поиск
- максимального в строках
- Двумерный массив. Максимальный элемент в строке 30
- j , 1, N
- Вывод a i , j
- i , 1, N
- a i , j=
- случайное[-10;10]
- Ввод N
- 1
- j , 2, N
- i , 1, N
- Мах = a i , 1
- a i , j > Max
- Max = a i , j
- Вывод Max
- Да
- Нет
- 1
- Начало
- Конец
- Нахождение максимального элемента в каждой строке в два прохода
Информатика - еще материалы к урокам:
- Презентация "Начните работу с нажатия кнопки Пуск" 5 класс
- Презентация "Безопасность, гигиена, эргономика, ресурсосбережение" 10 класс
- Презентация "Внешние устройства ЭВМ" 8 класс
- Презентация "Социальные сети" 9 класс
- Презентация "Строки в Pascal" 10 класс
- Презентация "Мультимедиа технологии в Интернете" 10 класс