СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

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

Категория: Информатика

Нажмите, чтобы узнать подробности

Двумерные

массивы. В математике таблицы чисел, состоящие из строк и столбцов называются матрицами и записываются в круглых скобках.

Просмотр содержимого документа
«Двумерные массивы»

Двумерный массив. Матрицы 1 В математике  таблицы чисел, состоящие из строк и столбцов называются  матрицами  и записываются в круглых скобках.

Двумерный массив. Матрицы 1

В математике таблицы чисел, состоящие из строк и столбцов называются матрицами и записываются в круглых скобках.

Двумерный массив. Применение. 2 Использование двумерных массивов для построения поверхностей.

Двумерный массив. Применение. 2

Использование двумерных массивов для построения поверхностей.

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

Двумерный массив. Определение. 3

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

Способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется  двумерным массивом

Двумерный массив. Определение 4 В математике : A i ;j  1 2 3 4 5 6 7 4 4 1 2 1 5 3 7 5 8 0 9 4 6 9 0 0 1  2  3 В Pascal : A[ i ,j ] A[ 2 , 4 ]  A[ 1 , 2 ]  A[ 3 , 5 ]

Двумерный массив. Определение 4

В математике :

A i ;j

1 2 3 4 5 6

7

4

4

1

2

1

5

3

7

5

8

0

9

4

6

9

0

0

1

2

3

В Pascal :

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; Каждый элемент которого в свою очередь является одномерным массивом Одномерный массив

Двумерный массив. Описание 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;

Двумерный массив. Описание 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));  Непосредственно в программе указываем значения элементов массива.

Двумерный массив. Описание 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));

Непосредственно в программе указываем значения элементов массива.

Двумерный массив. Заполнение 8 Цикл отвечающий за перебор строк. Берем первую, вторую и так далее строки Заполнение массива с клавиатуры: For i := 1 to 3 do  begin  For j := 1 to 4 do   begin   write(' A[ ', i, ' , ' ,j, ' ]= ');   readln(a[i, j])  end ;  Цикл отвечающий за перебор ячеек в каждой строке. end ;

Двумерный массив. Заполнение 8

Цикл отвечающий за перебор строк. Берем первую, вторую и так далее строки

Заполнение массива с клавиатуры:

For i := 1 to 3 do begin

For j := 1 to 4 do

begin

write(' A[ ', i, ' , ' ,j, ' ]= ');

readln(a[i, j])

end ;

Цикл отвечающий за перебор ячеек в каждой строке.

end ;

Двумерный массив. Заполнение 9 Блок-схема заполнения с клавиатуры: Цикл отвечающий за перебор строк. (Внешний цикл) i , 1, N j , 1, N Ввод a i , j Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)

Двумерный массив. Заполнение 9

Блок-схема заполнения с клавиатуры:

Цикл отвечающий за перебор строк. (Внешний цикл)

i , 1, N

j , 1, N

Ввод a i , j

Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)

Двумерный массив. Заполнение 10 Заполнение массива случайными числами: For i := 1 to 3 do begin  For j := 1 to 4 do begin   a[i, j] := random(2 1 ) - 10;  write(a[i, j]:6) ;    end ;  writeln ;   end ;  Когда i -я строка закончилась, пишем пустой WriteLN для перехода на новую строку Write без LN выводит элементы массива в строку

Двумерный массив. Заполнение 10

Заполнение массива случайными числами:

For i := 1 to 3 do begin

For j := 1 to 4 do begin

a[i, j] := random(2 1 ) - 10;

write(a[i, j]:6) ;

end ;

writeln ;

end ;

Когда i -я строка закончилась, пишем пустой WriteLN для перехода на новую строку

Write без LN выводит элементы массива в строку

Двумерный массив. Заполнение 11 i , 1, N Цикл отвечающий за перебор строк. (Внешний цикл) j , 1, N a i , j =  случайное [ -10 ;10] Вывод a i , j Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)

Двумерный массив. Заполнение 11

i , 1, N

Цикл отвечающий за перебор строк. (Внешний цикл)

j , 1, N

a i , j =

случайное [ -10 ;10]

Вывод a i , j

Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)

Двумерный массив. Заполнение 12 Заполнение массива по правилу: 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 ; 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 11111 22222 33333 44444 55555 Значение элемента в каждой ячейке строки равно номеру строки.

Двумерный массив. Заполнение 12

Заполнение массива по правилу:

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 ;

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

11111

22222

33333

44444

55555

Значение элемента в каждой ячейке строки равно номеру строки.

Двумерный массив. Заполнение 13 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 2 3 4 Главная диагональ: I=J a 14 a 11  1  2  3 4 a 23 a 22 Побочная диагональ: I + J = N+1 a 32 a 33 a 44 a 41 Заполнить произвольный массив размером N x N (N  00001  00010  00100  01000  10000  Если побочная диагональ то заполнить ячейку 1 во всех остальных случаях 0

Двумерный массив. Заполнение 13

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 2 3 4

Главная диагональ:

I=J

a 14

a 11

1

2

3

4

a 23

a 22

Побочная диагональ:

I + J = N+1

a 32

a 33

a 44

a 41

Заполнить произвольный массив размером

N x N (N

00001

00010

00100

01000

10000

Если побочная диагональ то заполнить ячейку 1 во всех остальных случаях 0

Двумерный массив. Заполнение 14 Ввод N i , 1, N j , 1, N Фрагмент блок-схемы задачи заполнения побочной диагонали единицами i+j=N+1 Да Нет a i , j = 1 a i , j = 0 Вывод a i , j

Двумерный массив. Заполнение 14

Ввод N

i , 1, N

j , 1, N

Фрагмент блок-схемы задачи заполнения побочной диагонали единицами

i+j=N+1

Да

Нет

a i , j = 1

a i , j = 0

Вывод a i , j

j " width="640"

Двумерный массив. Заполнение 15

1 2 3 4 5

Удовлетворяет неравенству

i

a 11

1

2

3

4

5

a 22

a 33

a 44

a 55

Удовлетворяет неравенству

i j

n+1 " width="640"

Двумерный массив. Заполнение 16

1 2 3 4 5

a 15

1

2

3

4

5

Удовлетворяет неравенству

i +j n+1

a 24

a 33

a 42

a 5 1

Удовлетворяет неравенству

i +jn+1

j ) a 15 ( i+jn+1 ) And ( i ) a 11 1 2 3 4 5 a 22 a 24 a 33 a 42 a 44 a 5 1 a 55 ( i+jn+1 ) And ( ij ) " width="640"

Двумерный массив. Заполнение 17

Системы неравенств

(i+j And ( i )

1 2 3 4 5

( i+j n+1 ) And ( i j )

a 15

( i+jn+1 ) And ( i )

a 11

1

2

3

4

5

a 22

a 24

a 33

a 42

a 44

a 5 1

a 55

( i+jn+1 ) And ( ij )

=n+1) and (i else a[i,j]:=0; write(a[i,j]:2); end; writeln; end; Заполнить произвольный массив размером N x N (N 0000 1 000 11 00 111 000 11 0000 1 Это пересечение двух множеств. Элементы лежащие на и ниже побочной диагонали и элементы лежащие на и выше главной диагонали Проверяем условие принадлежности данному множеству " width="640"

Двумерный массив. Заполнение 18

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

else a[i,j]:=0;

write(a[i,j]:2);

end;

writeln;

end;

Заполнить произвольный массив размером N x N (N

0000 1

000 11

00 111

000 11

0000 1

Это пересечение двух множеств. Элементы лежащие на и ниже побочной диагонали и элементы лежащие на и выше главной диагонали

Проверяем условие принадлежности данному множеству

Двумерный массив. Сумма элементов 19 Второй способ. Два прохода по массиву 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); Один или два прохода по массиву? Первый способ. Один проход по массиву 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); Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти сумму элементов массива лежащих на главной диагонали. Замечание. Если нужно что то сделать только  с главной диагональю, то можно обойтись без вложенных циклов For i :=1 to n do  s:=s+ a[i, i ]; Первый проход. Заполняем массив и выводим его на экран Заполняем случайными числами и выводим на экран Второй проход. Находим сумму. И сразу же находим сумму элементов лежащих на главной диагонали

Двумерный массив. Сумма элементов 19

Второй способ. Два прохода по массиву

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);

Один или два прохода по массиву?

Первый способ. Один проход по массиву

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);

Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти сумму элементов массива лежащих на главной диагонали.

Замечание.

Если нужно что то сделать только

с главной диагональю,

то можно обойтись без вложенных циклов

For i :=1 to n do s:=s+ a[i, i ];

Первый проход. Заполняем массив и выводим его на экран

Заполняем случайными числами и выводим на экран

Второй проход. Находим сумму.

И сразу же находим сумму элементов лежащих на главной диагонали

Двумерный массив. Сумма элементов 20 Нахождение суммы элементов на главной диагонали за один проход по массиву Ввод N S = 0 i , 1, N j , 1, N a i , j =  случайное [ -10 ;10] Вывод a i , j i = j Да S =S + a i , j Нет Вывод S

Двумерный массив. Сумма элементов 20

Нахождение суммы элементов на главной диагонали за один проход по массиву

Ввод N

S = 0

i , 1, N

j , 1, N

a i , j =

случайное [ -10 ;10]

Вывод a i , j

i = j

Да

S =S + a i , j

Нет

Вывод S

Двумерный массив. Сумма элементов 21 Нахождение суммы элементов на главной диагонали за два прохода Ввод N S = 0 1 i , 1, N i , 1, N j , 1, N j , 1, N i = j Нет a i , j =  случайное [ -10 ;10] Да Вывод a i , j S =S + a i , j 1 Вывод S

Двумерный массив. Сумма элементов 21

Нахождение суммы элементов на главной диагонали за два прохода

Ввод N

S = 0

1

i , 1, N

i , 1, N

j , 1, N

j , 1, N

i = j

Нет

a i , j =

случайное [ -10 ;10]

Да

Вывод a i , j

S =S + a i , j

1

Вывод S

Двумерный массив. Сумма элементов 22 Нахождение суммы элементов на главной диагонали за два прохода (в случае когда речь идет только о главной диагонали и остальной массив не нужен) Ввод N S = 0 i , 1, N i , 1, N j , 1, N a i , j =  случайное [ -10 ;10] S =S + a i , i Вывод a i , j Вывод S 1

Двумерный массив. Сумма элементов 22

Нахождение суммы элементов на главной диагонали за два прохода (в случае когда речь идет только о главной диагонали и остальной массив не нужен)

Ввод N

S = 0

i , 1, N

i , 1, N

j , 1, N

a i , j =

случайное [ -10 ;10]

S =S + a i , i

Вывод a i , j

Вывод S

1

Двумерный массив. Минимальный элемент 23 Один или два прохода по массиву? Рассуждение второе. Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти минимальный элемент лежащий на главной диагонали.

Двумерный массив. Минимальный элемент 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(2 1 )-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]  writeln(' Минимальный элемент =',m:5); Заполняем массив случайными числами Замечание . В данном случае можно не бегать по всему  массиву а пройти только по главной диагонали, обойдясь без вложенных циклов.  m:=a[1,1]; For i:=2 to n do   if (a[i,i]  Если встречается элемент меньше m, и он лежит на главной диагонали, то он становится минимальным Предполагаем, что минимальный элемент стоит в левом верхнем углу

Двумерный массив. Минимальный элемент 24

Стандартный способ без анализа задачи

Write(' ВВеди N = ');Readln(n);

For i:=1 to n do begin

For j:=1 to n do begin

a[i,j]:=random(2 1 )-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]

writeln(' Минимальный элемент =',m:5);

Заполняем массив случайными числами

Замечание .

В данном случае можно не бегать по всему

массиву а пройти только по главной диагонали, обойдясь без вложенных циклов.

m:=a[1,1];

For i:=2 to n do

if (a[i,i]

Если встречается элемент меньше m, и он лежит на главной диагонали, то он становится минимальным

Предполагаем, что минимальный элемент стоит в левом верхнем углу

Двумерный массив. Минимальный элемент 25 С анализом исходных данных задачи 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]  end;  Writeln;  end;  writeln(' Минимальный элемент лежащий на главной диагонали =',m:5); Если немного по рассуждать, можно увидеть, что самое «маленькое» число, которое может выдать генератор случайных чисел это 10. Все остальные числа будут меньше его. Т.к. в условии задачи нам точно задан интервал [-10  ;  10] . Предполагаем, что самое маленькое число 10, правая граница исходного интервала. Заполняем, выводим на экран и сразу проверяем на минимальность в главной диагонали.

Двумерный массив. Минимальный элемент 25

С анализом исходных данных задачи

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]

end;

Writeln;

end;

writeln(' Минимальный элемент лежащий на главной диагонали =',m:5);

Если немного по рассуждать, можно увидеть, что самое «маленькое» число, которое может выдать генератор случайных чисел это 10. Все остальные числа будут меньше его. Т.к. в условии задачи нам точно задан интервал

[-10 ; 10] .

Предполагаем, что самое маленькое число 10, правая граница исходного интервала.

Заполняем, выводим на экран и сразу проверяем на минимальность в главной диагонали.

Двумерный массив . Максимальный элемент в строке 26 Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти максимальный элемент в каждой строке.

Двумерный массив . Максимальный элемент в строке 26

Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти максимальный элемент в каждой строке.

max) then max:= a[i,j]; end; write(' MAx = ',max:5); writeln; end; Решение в один проход, с анализом задачи Перебираем строки Предполагаем, что самое большое число - 10, левая граница исходного интервала. Заполняем элемент массива и выводим его на экран Если в строке встречается элемент больше максимального, то он становится максимальным Выводим наибольший элемент в строке " width="640"

Двумерный массив. Максимальный элемент в строке 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(2 1 )-10;

write(a[i,j]:4);

if (a[i,j]max) then max:= a[i,j];

end;

write(' MAx = ',max:5);

writeln;

end;

Решение в один проход,

с анализом задачи

Перебираем строки

Предполагаем, что самое большое число - 10, левая граница исходного интервала.

Заполняем элемент массива и выводим его на экран

Если в строке встречается элемент больше максимального, то он становится максимальным

Выводим наибольший элемент в строке

Max Max = a i , j Нет Вывод Max Конец " width="640"

Двумерный массив. Максимальный элемент в строке 28

Нахождение максимального элемента в каждой строке в один проход

Ввод N

i , 1, N

Мах = - 1 0

j , 1, N

a i , j =

случайное [ -10 ;10]

Вывод a i , j

Да

a i , j Max

Max = a i , j

Нет

Вывод Max

Конец

max) then max:= a[i,j]; writeln('В ',i,' строке max = ',max:5); end; Стандартным способом, первый проход – заполнение, второй проход – поиск максимального в строках Идем по строке и если находим элемент больший чем максимальный, то он становится максимальным Заполняем массив и выводим его на экран Вывод наибольшего элемента в строке " width="640"

Двумерный массив. Максимальный элемент в строке 29

Предполагаем, что наибольший элемент в каждой строке стоит на первом месте

Перебираем строки

ClrScr;

Write(‘ Введи N = ');Readln(n);

For i:=1 to n do begin

For j:=1 to n do begin

a[i,j]:=random(2 1 )-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;

Стандартным способом,

первый проход – заполнение,

второй проход – поиск

максимального в строках

Идем по строке и если находим элемент больший чем максимальный, то он становится максимальным

Заполняем массив и выводим его на экран

Вывод наибольшего элемента в строке

Max Нет a i , j = случайное [ -10 ;10] Да Вывод a i , j Max = a i , j 1 Вывод Max Нахождение максимального элемента в каждой строке в два прохода Конец " width="640"

Двумерный массив. Максимальный элемент в строке 30

Начало

1

Ввод N

i , 1, N

Мах = a i , 1

i , 1, N

j , 2, N

j , 1, N

a i , j Max

Нет

a i , j =

случайное [ -10 ;10]

Да

Вывод a i , j

Max = a i , j

1

Вывод Max

Нахождение максимального элемента в каждой строке в два прохода

Конец


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!