Массив - это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элемента в массиве.
Общий вид описания массива:
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 Одномерные массивы в паскаль.
Полезно посмотреть: Объяснение работы с циклом и массивом.
