Массив - это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элемента в массиве.
Общий вид описания массива:
var <имя_массива>: array [<мин_знач_индекса> .. <макс_знач_индекса>] of <тип_элементов>;
Объявление массива производится директивой array of.
Статический массив:
const N = 100; M = 50; var a: array[1..N] of integer; matrix: array[1..N, 1..M] of integer;
Динамический массив:
var a: array of integer; matrix: array of array of integer;
Динамический массив заполненный в секции var:
var a: array of int64 = (34, 54, 67, 89, 12, 23, 76);
Таблица "Методы списков"
Метод | Что делает |
---|---|
Length(a) |
Получить длину (количество элементов) динамического массива a |
SetLength(a, N) |
Установить размерность динамического массива a в N элементов |
High(a)
|
Получить наибольший индекс динамического массива a. |
Примеры
Одномерный динамический массив:
program a1; var i, N: integer; A: Array of integer; begin read( N); SetLength( A, N); for i := 0 to N-1 do read( A[i]); for i := 0 to N-1 do write( A[i], ' '); writeln; writeln( 'High( A ) = ', High( A ) ); end.
Чтение (цифры записаны через пробел) одномерного динамического массива в цикле Repeat .. until (окончание ввода - цифра ноль):
program a2;
var
mas: array of integer;
i, n: integer;
begin
i := 0;
SetLength(mas, i);
repeat
if Length(mas) = i then
SetLength(mas, i+1);
read(mas[i]);
i := i + 1;
until mas[i - 1] = 0;
SetLength(mas, i - 1);
writeln('Количество элементов: ', Length(mas));
for i := 0 to High(mas) do begin // Вывод всего массива
write(mas[i], ' ');
end;
end.
Двумерный динамический массив (динамическая матрица):
program a3; var i, j, N: integer; A: Array of Array of integer; begin read( N); SetLength( A, N); for i := 0 to N-1 do SetLength( A[i], N); randomize; for i := 0 to N-1 do for j := 0 to N-1 do A[i,j] := random(100, 999); for i := 0 to N-1 do begin for j := 0 to N-1 do write( A[i,j], ' '); writeln; end; end.
Удаление элемента динамического массива:
type intArray = array of int64; var a: intArray = (34, 12, 99, 23, 54, 67, 12, 34, 89, 12, 23, 76, 123, 99); procedure array_del_elem_by_index(var _a: intArray; _index: int64); var i: int64; begin for i := _index to High(_a) - 1 do _a[i] := _a[i + 1]; SetLength(_a, High(_a)); end;
Язык Паскаль с нуля | #7 Одномерные массивы в паскаль.
Полезно посмотреть: Объяснение работы с циклом и массивом.