Массивы

0

No comments posted yet

Comments

Slide 1

МАССИВЫ

Slide 2

Одномерные массивы

Slide 3

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

Slide 4

Значение элемента массива а[3]=2, а[7]=6. Данные в массивах сохраняются только до конца работы программы. Для их долговременного хранения программа должна записать данные в файл.

Slide 5

Характеристики массива: тип — общий тип всех элементов массива; размерность (ранг) — количество индексов массива; диапазон изменения индекса (индексов) — определяет количество элементов в массиве

Slide 6

Описание массива Например: Const n=100; var a: array[1..n] of real; { 100 элементов — вещественные числа } b: array[0..50] of char; { 51 элемент — символы } с: array[-3..4] of boolean; { 8 элементов — логические значения } x,y: array[1..20] of integer; { два массива x и у содержат по 20 элементов — целые числа } var ИмяМассива: array [НижняяГраница.. ВерхняяГраница] of Тип Элементов;

Slide 7

Способы заполнения массива 1. Ввод данных с клавиатуры: for i:=1 to n do read (a[i]); 2. Ввод данных с помощью датчика случайных чисел. Например. Заполним массив числами в диапазоне от -3 до 7. randomize; for i:=1 to n do a[i]:=random(11)-3; Вывод элементов массива Вывод элементов массива осуществляется в цикле: for i:=1 to n do write (a[i],’ ‘)

Slide 8

Действия над элементами массива. Вычислим сумму элементов. … Const n=10; Var a:array[1..n] of integer; {описываем массив а} i, s: integer; begin randomize; s:=0; for i:=1 to n do begin a[i]:=random(11)-3; {заполняем массив а случайными числами } write (a[i],’ ‘); {выводим заполненный массив} end; for i:=1 to n do s:=s+a[i]; {находим сумму элементов массива а} writeln (‘сумма элементов массива =’, s) {выводим ответ} end.

Slide 9

Найти произведение элементов имеющих нечетный индекс. … Const n=10; Var a:array[1..n] of integer; {описываем массив а} i, p: integer; begin randomize; p:=1; for i:=1 to n do begin a[i]:=random(11)-3; {заполняем массив а случайными числами} write (a[i],’ ‘); {выводим заполненный массив} end; for i:=1 to n do if i mod 2<>0 then p:=p*a[i] {находим произведение элементов массива а имеющих нечетный индекс} writeln (‘призведение элементов массива =’, s) {выводим ответ} end. Действия над элементами массива.

Slide 10

Найти номер первого из элементов массива A, имеющего значение равное нулю. Если таких элементов нет, вывести соответствующее сообщение. Const n=10; Var a:array[1..n] of integer; i, p: integer; begin randomize; p:=1; for i:=1 to n do begin a[i]:=random(11)-3; {заполняем массив а случайными числами } write (a[i],’ ‘); {выводим заполненный массив} end; i:=1; Repeat i:=i+1; until (a[i]=0) or (i=n) ; {выход из цикла, когда нашли нужный элемент или массив закончился} if a[i]=0 then writeln (‘номер первого нулевого элемента=’, i) else writeln (‘ таких элементов нет!’); end. Действия над элементами массива.

Slide 11

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

Slide 12

Матрица – это массив, в котором каждый элемент имеет два индекса (номер строки и номер столбца). A строка 2 столбец 3 ячейка A[3,4]

Slide 13

1 2 3 4 5 6 1 2 3 В Pascal: A(I;j) A[i,j] A[2,3]=3 A[2,1]=4

Slide 14

Каждый элемент двумерного массива описывается как a[i,j], где: а – имя массива i – номер строки j – номер столбца Двумерным массивом называется совокупность данных, каждое значение которых зависит от его положения в строке и в столбце.

Slide 15

Пример двумерного массива (матрицы): А[3,3]= Если в матрице количество строк и столбцов совпадают, то она называется квадратной, в противном случае прямоугольной.

Slide 16

Главная диагональ квадратной матрицы проходит из левого верхнего угла в правый нижний. А[3,3]=

Slide 17

Побочная диагональ квадратной матрицы проходит из правого верхнего угла в левый нижний. А[3,3]=

Slide 18

Описание матрицы в разделе var аналогично описанию одномерного массива, только теперь необходимо указывать диапазон изменения столбцов и строк. Const n=10; m=12; Var a:array [1..n,1..m] of integer; Имя массива Кол-во столбцов Кол-во строк Тип массива

Slide 19

Для ввода матрицы в память существует много способов, это зависит от направления задачи. Рассмотрим два самых распространенных способа:

Slide 20

Writeln(‘Введите элементы матрицы по строкам’); Writeln(‘В конце каждой строки нажимайте ENTER’); For i:=1 to n do Begin For j:= 1 to m do Begin Readln(a[i,j]); End; End; Пример 1 (ввод с клавиатуры)

Slide 21

Пример 2 (заполнение случайными числами) Randomize; For i:=1 to n do Begin For j:=1 to n do Begin a[i,j]:=random(10); write(a[i,j],’ ‘); End; Writeln; End;

Slide 22

Свойства двумерных массивов (матриц) i > j i < j i+j-1<N i+j-1>N Если i = j, то элемент лежит на главной диагонали. Если i + j – 1 = N, то элемент лежит на побочной диагонали.

Slide 23

Свойства двумерных массивов (матриц) Единичной называют матрицу, у которой все элементы главной диагонали - 1, а остальные – 0.

Slide 24

Задачи базового минимума

Slide 25

Вычисление суммы элементов главной диагонали квадратной матрицы:

Slide 26

Для решения данной задачи необходимо определить, чем отличаются элементы главной диагонали? А[3,3]=

Slide 27

Program Sumglav; const n=3; var a:array [1..n,1..n] of real; i, j: integer; S: real; Begin ВВОД МАССИВА; S:=0; for i:=1 to n do S:=S+a[i,i]; write(‘Сумма элементов главной диагонали = ’,S); readln; readln end.

Slide 28

Нахождение наибольших элементов каждой строки массива:

Slide 29

Program Stroki; const n=3; m=4 var a:array [1..n,1..m] of real; max:array [1..n] of real; i, j: integer; Begin ВВОД МАССИВА; for i:=1 to n do begin max[i]:=a[i,1]; for j:=2 to m do if max[i]<a[i,j] then max[i]:=a[i,j]; end; write(‘Наибольшие числа строк массива => ’); for i:=1 to n do writeln(max[i]); readln; readln end.

Slide 30

Перестановка строк массива:

Slide 31

Program Stroki2; const n=3; m=4; var a:array [1..n,1..m] of integer; i, j,k,l,c: integer; Begin ВВОД МАССИВА; writeln(‘Ведите номера меняемых местами строк’); readln(k,l); for j:=1 to m do begin c:=a[k,j]; a[k,j]:=a[l,j]; a[l,j]:=c; end; writeln(‘Новый массив => ’); for i:=1 to n do begin for j:=1 to m do write(a[i,j],’ ‘); writeln; end; readln; readln end.

URL: