Одномерные массивы
Одномерный массив Статический массив – упорядоченная последовательность фиксированного количества переменных одного типа, имеющая общее имя. Описание массива: : array [ ] of ; : array [ ] of ; i A[i]
Пример объявления массива Пример объявления массива 10-ти целых чисел. Var a : array [1..10] of integer; i A[i] индекс элемент 3
Объявление массивов с использованием раздела описания типов Пример объявления массива : Var a : array [1..50] of real; b,c : array [1..20] of integer; … Аналогичное описание массивов с использованием раздела описания типов: Type mas1=array[1..50] of real; mas2=array[1..20] of integer; Var a : mas1; b,c : mas2; … 4
Ввод – вывод элементов массива Ввод элементов с клавиатуры и вывод элементов. Так как необходимо ввести определенное число элементов, то алгоритмическая структура программы будет циклической. В цикле, управляющей переменной будет являться значение i - индекс элемента массива, для вывода элементов так же будет использован цикл. 5
Ввод – вывод элементов массива Var a : array [1..10] of integer; i : integer; Begin writeln ( Заполнение элементов целочисленного массива A[10] ); for i:=1 to 10 do begin write (a[, i, ] =); read (a[ i ]); end; writeln (В памяти компьютера сформирован массив с элементами); for i:=1 to 10 do write (a[ i ]:6); End. начало Ai A[10] конец Ai 6
Генерация случайных чисел random(n) – функция генерации случайного числа в диапазоне от 0 до n-1. Примеры : x:=random(11); у:=random (101)-50; z:=random (51)-100; k:=random(21)+80; randomize – функция позволяющая генерировать случайные числа различными при каждом запуске программы. 7
Ввод – вывод элементов массива Генерация элементов массива случайными числами. Var a : array [1..15] of integer; i : integer; Beginrandomize; writeln (Элементы целочисленного массива A[15] сформированные случайными числами диапазона от -100 до 100.); for i:=1 to 15 do begin a[ i ]:=random(201)-100; write (a[ i ]:6); end;End. начало Ai A[15] конец 8
Нахождение суммы элементов массива Для получения суммы элементов одномерного статического массива необходимо подготовить ячейку для накопления в нее суммы, предварительно обнулить ее значение. После чего, перебирая в цикле все элементы массива, увеличивать ее значение на величину значения каждого i-го элемента. i Ai S 177 9
Нахождение суммы элементов массива начало Ai A[20] конец s s i=1;20 s:=s+a[ i ] s=0 10
Суммирование двух одномерных массивов Данный алгоритм подразумевает формирование элементов массива по заданным элементам двух массивов, где каждое очередное значение получаемого массива равно сумме соответствующих элементов заданных массивов по индексам получаемого элемента. Т.е. c[i]=a[i]+b[i]. i Ai Bi Ci
Суммирование двух одномерных массивов начало Ai, Bi a[10], b[10], c[10] конец Ci i=1;10 c[ i ]:=a[ i ]+b[ i ] 12
Изменение значений некоторых элементов массива Рассмотрим задачу замены отрицательных элементов на противоположные по знаку. i Ai i Ai
Изменение значений некоторых элементов массива Constn=20;Var a : array [1..n] of integer; i : integer; i : integer;Begin writeln ( Заполнение элементов целочисленного массива A[,n,] ); for i:=1 to n do begin write (a[, i, ] =); read (a[ i ]); end; for i:=1 to n do if a[ i ]
Определение числа элементов, удовлетворяющих заданному условию Для решения такой задачи необходимо задать условие и в цикле перебирая все элементы массива, в случае выполнения данного условия увеличивать значение некоторой переменной k на единицу. До цикла перебора всех элементов, необходимо значение k обнулить. Решим задачу для определения в массиве количества элементов меньших заданного числа Т. i Ai T 17 K 8 15
Определение числа элементов, удовлетворяющих заданному условию начало Ai a[20] конец k k i=1;10 a[ i ]
Нахождение индексов элементов с заданным свойством Рассмотрим задачу Нахождения и вывода на экран номеров (индексов) четных элементов. Для решения задачи необходимо просмотреть весь массив, и если просматриваемый элемент является четным, то выводить его индекс. i Ai
Нахождение индексов элементов с заданным свойством Сonst n=10;Type massiv=array[1..n] of integer; Var a : massiv; i: integer; Begin writeln ( Введите элементы массива A ); for i:=1 to n do begin write (a[, i, ] =); read (a[ i ]); end; for i:=1 to n do if a[ i ] mod 2=0 then write (i:4); End. начало Ai a[10] конец i=1;10 i i + - a[ i ] mod 2=0 18
Поиск минимального и максимального элементов одномерного массива Поиск максимального и минимального элементов массива относится к классическим задачам обработки данных с использованием массива. Суть алгоритма поиска минимального элемента состоит в том, что предположительно за минимальный объявляют первый элемент массива и перебирая все элементы изменяют значение минимального элемента текущим, в том случае, если он оказался меньше минимального на данном этапе. Задача нахождения максимального элемента имеет подобное тривиальное решение. i Ai Min -7 19
Поиск минимального элемента одномерного массива начало Ai a[20] конец i=2;20 A[ i ]
Решение задач 1. Найдите сумму элементов массива, состоящего из N чисел. Для ввода элементов массива используйте генерацию чисел. 2. Задайте и выведите на экран два одномерных массива А и В. Выведите на экран массив С, каждый i-ый элемент которого состоит из суммы двух i-ых элементов массивов А и В. 3. Определите в массиве количество элементов больших заданного числа Т. 4. Найдите максимальный и минимальный элемент одномерного массива. 21