Массивы Массив - упорядоченная структура данных одного типа, имеющих общее имя. Упорядочение элементов в массиве происходит по их номерам. Массив задается именем, типом данных и размерностью. Размерность - количество элементов в массиве. Массивы делятся на одномерные (линейные), двумерные (матрицы) и многомерные (кубик Рубика). В одномерном массиве элементы нумеруются одним индексом. В двумерном массиве элементы нумеруются двумя индексами. Для описания массива служат служебные слова array of: array [размерность] of тип_элементов Например: К элементу массива обращаются по имени массива и номеру элемента: A[2] – элемент под номером 2, А[1,2] – элемент в 1 строке 2 столбце ОДНОМЕРНЫЕ МАССИВЫ Одномерный массив можно представить в виде таблицы, в которой существует только одна строка или один столбец. A= 34 45 2 А1 А2 А3 , где: A - имя массива; 1, 2, 3 - порядковый номер (индексы); 34, 45, 2 - элементы массива (содержимое); Элементы вводятся в массив и выводятся на экран поочередно, поэтому для ввода-вывода и обработки элементов массива необходимо организовать цикл. Ввод одномерного массива в цикле с параметром: На языке Турбо Паскаль: for i:=1 to N do begin write(‘x(‘,i, ’)= ‘); readln(x[i]) end; 1 Вывод одномерного массива в цикле с параметром 1. В столбец: For I := 1 to n do Writeln(а[i]); 2. В строку через робел: For I := 1 to n do Begin Write(а[i], ‘ ‘); Writeln; End; 3. С заданием формата, где под каждый элемент отводится 4 позиции: For I := 1 to n do Write(а[i]:4); Примеры одномерных массивов: платежи за каждый из 12 месяцев, расположение букв в алфавите. Задача 1: Поиск минимального элемента массива Дан массив Х, состоящий из 7 элементов. Найти минимальный элемент массива. Алгоритм решения задачи: 1. Пусть в переменной с именем Min хранится значение минимального элемента массива. Предположим, что первый элемент массива является минимальным. Запишем его в переменную Min. 2. Все последующие элементы массива сравниваем в цикле с минимальным. Если текущий элемент массива оказывается меньше минимального, то записываем его в переменную Min. Решение: Таблица 1 – Определение минимального элемента Номера элементов 1 2 3 4 5 6 7 Исходный массив 4 7 3 8 9 2 5 Значение переменной Min 4 4 3 3 3 2 2 На языке Турбо Паскаль: Var x: array [1..7] of integer; min: integer; Begin Writeln(‘Введите элементы массива’); for i:=1 to 7 do begin write(‘x(‘,i, ’)= ‘); readln(x[i]) end; min := x[1]; For i := 2 to n do If x[i] < min then begin min := x[i]; end; write (‘Min=’, Min); end. 2 Задача 2: Какое число будет напечатано в результате работы программы: var k, m: integer; Dat: array [1..10] of integer; begin Dat[1] :=16; Dat[2] :=20; Dat[3] :=20; Dat[4] :=41; Dat[5] :=14; Dat[6] :=21; Dat[7] :=28; Dat[8] :=12; Dat[9] :=15; Dat[10] :=35; m:=0; for k:=1 to 10 do if dat[k]>m then begin m:=Dat[k] end; writeln('m=',m); end. Решение: Таблица 2 – Определение результата m Исходный массив Значение переменной m 0 1 16 16 2 20 20 Номера элементов 4 5 6 41 14 21 41 41 41 3 20 20 7 28 41 8 12 41 9 15 41 10 35 41 Задача 3: Дан массив Х, состоящий из n элементов. Найти произведение его элементов. Решение: n=8 Таблица 3 – Произведение элементов р Исходный массив Значение переменной р 1 1 2 2 2 3 6 Номера элементов 3 4 5 1 4 1 6 24 24 6 2 48 7 3 144 8 2 288 На языке Турбо Паскаль: Для обработки элементов массива удобно использовать цикл For…do. Фрагмент программы: p := 1; For i := 1 to n do p := p*x[i]; 3 Задача 4: Сравнение элементов массива Определить содержит ли массив А[1..20] число Х, введенное с клавиатуры. Решение: uses crt; var a: array[1..20] of integer; i, х: integer; begin randomize;{запуск процедуры генератора случайных чисел} for i:=1 to 20 do begin clrscr; randomize; writeln(‘Введите число х’) read (x); for i:=1 to 20 do a[i] := random (100); if x = a[i] then write('Число х имеется '); end; readln end. ДВУМЕРНЫЕ МАССИВЫ Двумерный массив (матрица) - массив, в котором элементы нумеруются двумя индексами – номером строки и номером столбца: А11 А21 А31 А41 А12 А22 А32 А42 А13 А23 А33 А43 А14 А24 А34 А44 А15 А25 А35 А45 Двумерные массивы располагаются в памяти по строкам: сначала все элементы первой строки, затем – второй т.д. При обращении к элементам массива в квадратных скобках указываются два индекса: b[2,3] или a[i,j]. Обработка массивов производится при изменении индексов элементов. Ввод/вывод матриц Для ввода -вывода используются 2 вложенных цикла: 1. По строкам. 2. По столбцам. 4 Ввод двумерного массива: For i:=1 To n Do For j:=1 To m Do Begin Write (‘A[I,j]’); Read (A[i,j]); End; Вывод двумерного массива по строкам: For i:=1 To n Do Begin For j:=1 To m Do Write (A[i,j]:3); WriteLn; End; Примеры двумерных массивов: окна в здании, температура по времени. 5