
11_ Array.ppt
- Количество слайдов: 16
Массивы
Понятие массив Массив представляет собой группу пронумерованных элементов одного и того же типа, последовательно расположенных в памяти. Номер элемента массива называется индексом. Можно работать либо с массивом, либо с его элементами
Типы для массивов Type Tarr 10 int=array[1. . 10] of integer; Tarr 20 real=array[0. . 19] of real; Tstr 15=String[15]; Tarr 10 Str 15=array[1. . 10] of. Tstr 15; Массивы, тип которых определен таким способом, можно использовать как параметры в подпрограммах.
Типы индексов в объявлении типа массива • • • ограниченного типа [0. . 10], [‘a’. . ’z’] логического типа [Boolean], символьного типа [Char], целого типа [byte] других перечислимых типов, но объем данных в массиве не должен превышать 2 Гб. [integer]
Type Tarr. Int 10=array[1. . 10] of integer; Var A: Tarr. Int 10; begin A[1]: =2; A[2]: =5; … A[10]: =7;
Пример1 создания массива procedure fibo 10(var a: Tarr. Int 10); var i: integer; begin a[1] : = 1; a[2] : = 1; for i: =3 to 10 do a[i] : = a[ i– 2 ] + a[ i– 1 ]; end; Здесь заполнены все 10 элементов массива
Пример2 создания массива procedure random. Array (var a: Tarr. Int 100; size, modul: integer); var i: integer; begin randomize; for i: =1 to size do a[i] : = random(modul); end; Здесь заполнено только size элементов массива из 100
Пример обработки массива //Вычисление суммы элементов function sum. Array(const a: TArray 100; size: integer): integer; var i: integer; begin result: =0; for i: =1 to size do result: =result + a[ i ]; end;
Операции над массивами • • • ввод массива вычисление среднего значения элементов поиск максимального и минимального элемента массива удаление элемента из массива циклический сдвиг элементов массива сортировка массива вставка элемента в упорядоченный массив поиск элемента в упорядоченном массиве объединение упорядоченных массивов
//Преобразование строки чисел в массив procedure get. Arr. From. Str ( var a: TArr 100; const s: String; var size: integer); var word. End. Pos, blank. Pos, number : integer; w : String[20]; begin size : = 0; while length( Trim( s ) ) > 0 do begin s: =Trim(s); blank. Pos: =Pos(' ', s); if blank. Pos = 0 then word. End. Pos : = length(s) else word. End. Pos : = blank. Pos -1; w: = Copy (s, 1, word. End. Pos); Delete (s, 1, word. End. Pos); number: =str. To. Int(w); size : = size + 1; a[size] : = number; end
//Ввод массива из компонента Тmеmо procedure get. Arr. From. Memo(var a: TArray 100; var size: integer; mem: TMemo); var i, number : integer; begin size : = 0; for i : = 0 to mem. Lines. Count - 1 do begin number: =str. To. Int(Mem. Lines[i]); size : = size + 1; a[size] : = number; end;
//Преобразование массива в строку function Array. To. Str(const a: TArray 100; size: integer): string; var i: integer; begin result: =''; for i: =1 to size do result: =result + ' ‘ + int. To. Str ( a[ i ] ); end;
//Удаление элемента в массиве procedure del. Element( element: integer; var a: TArray 100; var size: integer); var i, j: integer; begin i: =1; while i <= size do begin if a[i] = element then begin size: =size - 1; for j : = i to size do a[ j ]: =a[ j+1]; end else i: =i+1; end;
//Сдвиг массива влево procedure shift. Left(var a: TArray 100; size: integer); var tmp, i : integer; begin tmp: =a[1]; for i: =2 to size do a[ i-1]: =a[ i ]; a[size]: =tmp; end;
//Транспонирование массива procedure trans(var a: TArray 100; size: integer); var tmp, i: integer; begin for i: =1 to size div 2 do begin tmp: =a[i]; a[i]: =a[size-i+1]; a[size-i+1]: =tmp; end;
//массив в качестве счетчика Procedure stat(n, size: integer; var a: TArray 100); var i, r : integer; begin randomize; //Обнулили массив счетчиков for i: =1 to size do a[ i ] : = 0; //Тестируем случайные числа for i : =1 to n do begin r : = random( size ); a[ r+1]: = a[ r+1] + 1; end;
11_ Array.ppt