Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемВладислава Щекотурова
2 Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
3 Каждый элемент двумерного массива описывается как a[i,j], где: где: а – имя массива i - номер строки j – номер столбца
4 Пример двумерного массива (матрицы): А[3,3]=
5 Пример двумерного массива (матрицы): А[3,3]=
6 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] Двумерный массив можно представить себе в виде таблицы, в которой все строки и столбцы пронумерованы. Каждый элемент такого массива имеет два индекса: Первый индекс – это номер строки; Второй индекс – номер столбца.
7 Описание двумерных массивов: Const n=4; m=5; Var A :array [1..n, 1..m] of integer; СтрокиСтолбцы A [2,4] 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] A [4,2]
8 Двумерные массивы создаются путем ввода данных с клавиатуры, с помощью случайных чисел и вычислений по формулам. Для формирования массива используется два вложенных цикла. Первый цикл перебирает строки, а второй – столбцы. For i:=1 to n do for j:=1 to m do a[i, j]:=random(100); For i:=1 to n do for j:=1 to m do readln (a[i, j]); For i:=1 to n do for j:=1 to m do a[i, j]:=i*j;
9 For i:=1 to n do begin writeln; end; for j:=1 to m do write (a[i, j]);
10 Примеры решения задач. Задача 1. Создать программу для формирования таблицы умножения (таблицы Пифагора). Вывод массива:
11 Пример 2. Составить программу, которая в двумерном массиве случайных чисел находит в каждой строке наибольший элемент и записывает его в одномерный массив. m – количество строк в двумерном массиве и длина одномерного массива; n – количество столбцов; A[1..m,1..n] - двумерный массив; B[1..m] – одномерный массив max – вспомогательная переменная для нахождения наибольшего элемента в каждой строке.
12 Program max_str; Uses crt; Const m=5; n=6; var i,j:byte; a: array [1..m, 1..n] of integer; b: array [1..m] of integer; max: integer; begin clrscr; randomize; for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=random(100); write(a[i,j]:4); end; writeln; end; writeln ('Массив из максимальных значений в строках:'); for i:=1 to m do begin max:=a[i,1]; for j:=2 to n do begin if a[i,j]>max then max:=a[i,j]; end; b[i]:=max; write (b[i]:4); end; readln; end.
14 Если в матрице количество строк и столбцов совпадают, то она называется квадратной, в противном случае прямоугольной.
15 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] A[5,1]A[5,2]A[5,3]A[5,4]A[5,5] Квадратная матрица- это двумерный массив, в котором количество строк равно количеству столбцов. Обращение к элементу происходит также, как и в обычном двумерном массиве - A[i,j].
16 Главная диагональ квадратной матрицы проходит из левого верхнего угла в правый нижний. А[3,3]=
17 Свойства квадратной матрицы. Квадратные матрицы имеют главную диагональ. Например, для матрицы А. На главной диагонали лежат элементы 1,4,19. На главной диагонали лежат элементы 1,4,19.
18 Побочная диагональ квадратной матрицы проходит из правого верхнего угла в левый нижний. А[3,3]=
19 Свойства квадратной матрицы. Квадратные матрицы имеют побочную диагональ. Например, для матрицы А. На побочной лежат элементы 45,4,12.
20 Свойства квадратной матрицы. Квадратная матрица, у которой все элементы, исключая элементы главной диагонали, равны нулю, называется диагональной матрицей
21 Свойства квадратной матрицы. Диагональная матрица, у которой все элементы, стоящие на главной диагонали, равны единице, называется единичной матрицей
22 Свойства квадратной матрицы. Обращение к элементу главной диагонали выглядит как A[i,i], к элементу побочной как A[i,n-i+1], где n – количество строк матрицы. 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] A[5,1]A[5,2]A[5,3]A[5,4]A[5,5]
23 Соотношение индексов в квадратной матрице i=j элементы матрицы находятся на главной диагонали ij элементы матрицы находятся под главной диагональю i+j= n+l элементы матрицы находятся на побочной диагонали i+j< n+l элементы матрицы находятся над побочной диагональю i+j> n+l элементы матрицы находятся под побочной диагональю
24 Задача_1: Сформировать матрицу вида n=5; {блок заполнения массива по правилу} for i:=1 to n do for j:=1 to n do A[i, j]:= 2;
25 Задача_1: Сформировать матрицу вида Program z_1; uses crt; const n=5; var a:array[1..n,1..n] of integer; i,j:integer; begin clrscr; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=2; write(a[i,j],' '); end; WriteLn; end; end
26 Задача_2: Сформировать матрицу вида n=5; {блок заполнения массива по правилу} for i:=1 to n do for j:=1 to n do A[i, j]:= 2; {добавляется блок заполнения элементов главной диагонали массива } for i:=l to n do A[i,i]:= 5;
27 Задача_2: Сформировать матрицу вида Program z_2; uses crt; const n=5; var a:array[1..n,1..n] of integer; i,j:integer; Begin clrscr; for i:=1 to n do begin for j:=1 to n do begin if i=j then a[i,j]:=5; if ij then a[i,j]:=2; write(a[i,j],' '); end; WriteLn; end; readln; end.
28 Задача_3: Сформировать матрицу вида n=5; {блок заполнения массива по правилу} for i:=1 to n do for j:=1 to n do A[i, j]:= 2; { блок заполнения элементов главной диагонали массива } for i:=l to n do A[i,i]:= 5; { добавляется блок заполнения элементов побочной диагонали массива } for i:=l to n do A[i,n-i+1]:= 4;
29 Задача_3: Сформировать матрицу вида n=5; Program z_3; uses crt; const n=5; var a:array[1..n,1..n] of integer; i,j:integer; Begin clrscr; for i:=1 to n do begin for j:=1 to n do begin if ij then a[i,j]:=2; if i=j then a[i,j]:=5; if i+j=n+1 then a[i,j]:=4; write(a[i,j],' '); end; WriteLn; end; readln; end.
30 Задача_4: Сформировать матрицу вида (заполнить значениями элементы, расположенные на и над главной диагональю). n=5; { блок заполнения элементов главной диагонали массива } for i:=l to n do A[i,i]:= 5; {блок заполнения элементов над главной диагональю массива } for i:= 1 to n-1 do for j:= i+1 to n do A[i,j]:= 2;
31 Задача_4: Сформировать матрицу вида заполнить значениями элементы, расположенные на и над главной диагональю) Program z_4; uses crt; const n=5; var a:array[1..n,1..n] of integer; i,j:integer; Begin clrscr; for i:=1 to n do A[i,i]:= 5; for i:=1 to n-1 do for j:=i+1 to n do A[i,j]:= 2; for i:=2 to n do for j:=1 to i-1 do A[i,j]:= 0; For i:=1 to n do begin For j:=1 to n do write (a[i, j]); writeln; end; readln; end.
32 Задача_5: Сформировать матрицу вида (заполнить значениями элементы, расположенные на и под главной диагональю). n=5; { блок заполнения элементов главной диагонали массива } for i:=l to n do A[i,i]:= 5; {блок заполнения элементов под главной диагональю массива } for i:= 2 to n do for j:= 1 to i-1 do A[i,j]:= 3;
33 Задача_5: Сформировать матрицу вида (заполнить значениями элементы, расположенные на и под главной диагональю) Program z_5; uses crt; const n=5; var a:array[1..n,1..n] of integer; i,j:integer; Begin clrscr; for i:=1 to n do A[i,i]:= 5; {for i:=1 to n-1 do for j:=i+1 to n do A[i,j]:= 0;} for i:=2 to n do for j:=1 to i-1 do A[i,j]:= 3; For i:=1 to n do begin For j:=1 to n do write (a[i, j]); writeln; end; readln; end.
34 Задача_6: Сформировать матрицу вида (заполнить значениями элементы, расположенные на и над побочной диагональю) Program z_6; uses crt; const n=5; var a:array[1..n,1..n] of integer; i,j:integer; Begin clrscr; for i:=1 to n do begin for j:=1 to n do begin if i+jn+1 then a[i,j]:=0;} write(a[i,j],' '); end; WriteLn; end; readln; end.
35 Задача_6: Сформировать матрицу вида (заполнить значениями элементы, расположенные на и над побочной диагональю). n=5; { блок заполнения элементов побочной диагонали массива } for i:=l to n do A[i,n-i+1]:= 7; {блок заполнения элементов над побочной диагональю массива } for i:= 1 to n-1 do for j:= 1 to n-i do A[i,j]:= 1;
36 Задача_6: Сформировать матрицу вида (заполнить значениями элементы, расположенные на и над побочной диагональю).(2 способ) Program z_6; uses crt; const n=5; var a:array[1..n,1..n] of integer; i,j:integer; Begin clrscr; for i:=l to n do A[i,n-i+1]:= 7; for i:=1 to n-1 do for j:=1 to n-i do A[i,j]:= 1; For i:=1 to n do begin For j:=1 to n do write (a[i, j]); writeln; end; readln; end.
37 Задача_7: Сформировать матрицу вида (заполнить значениями элементы, расположенные на и под побочной диагональю). n=5; { блок заполнения элементов побочной диагонали массива } for i:=l to n do A[i,n-i+1]:= 7; {блок заполнения элементов под побочной диагональю массива } for i:= n downto 2 do for j:= n-i+2 to n do A[i,j]:= 1;
38 Задача_7: Сформировать матрицу вида (заполнить значениями элементы, расположенные на и под побочной диагональю) Program z_7; uses crt; const n=5; var a:array[1..n,1..n] of integer; i,j:integer; Begin clrscr; for i:=l to n do A[i,n-i+1]:= 7; for i:=n downto 2 do for j:=n-i+2 to n do A[i,j]:= 1; For i:=1 to n do begin For j:=1 to n do write (a[i, j]); writeln; end; readln; end.
39 Элементы главной диагонали можно записать так: A[i,i], т.е. индексы строки и столбца совпадают Элементы вспомогательной (побочной) диагонали можно записать так: A[i,n-i+1], где n – размер массива.
40 Заполнение нулями главной диагонали for i:=1 to n do a[i,i]:=0;
41 1 (из урока 5_6) Заполнить квадратную матрицу случайными числами. Вывести ее на экран. Транспонировать матрицу и результат также вывести на экран.
42 Особое значение при работе с квадратными массивами занимает задача «транспонирования», т.е переворачивания массива относительно главной диагонали. Для выполнения этой задачи нужно поменять местами элементы A[i,j] и A[j,i] Для перестановки двух элементов в массиве необходимо воспользоваться вспомогательной переменной: с:=A[2,5] A[2,5]:=A[5,2]; A[5,2]:=с; Для переворачивания всего массива используется двойной цикл.
43 Переворот массива относительно главной диагонали for i:=1 to n do for j:=i to n do begin с:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=с; end;
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.