Констант-массивы

Очень часто возникают сложности, связанные с вводом элементов массива, особенно во время отладки. Приходится по нескольку раз вводить большие объемы информации. Этого можно избежать, описав массив - константу в разделе Const.

 

Одномерный массив

<идентификатор — имя массива>: array [<диапазон изменения индекса> ] of <тип элементов> =

<список элементов, через запятую>);

Примеры:

 

Const

A : array [ 1 .. 5] of integer = (7, 3, 22, 4, 3) ;

B : array [ 1 .. 3] of real = (2.55, 7.1, 3.6) ;

C : array [ 1 .. 3] of char = (‘A’, ‘B’, ‘C’) ;

 

Многомерные массивы

<идентификатор - имя массива>: array [ <список диапазонов, через запятую>] of <тип элементов> = (<список элементов массива, разделённых по группам в круглых скобках>);

 

Для двухмерного массива, группы - это строки. Примеры:

Const

M : array [ 1 .. 3, 1 .. 3] of integer = ((1, 2, 4) , (1, 7, 8), (22, 8, 4)) ;

T : array [ 1 .. 2, 1 .. 2, 1 .. 2] of byte = (((1, 8) , (4, 4)), ((3, 2) , (5, 4))) ;

 

В нашем случае все массивы были описаны как типизированные константы, значит их использование в программе равноценно использованию обычных массивов - переменных. Однако надо помнить, что изменять элементы этих массивов нельзя.

Задача. В одномерном массиве определить количество последовательностей из нулей. Последовательности - это цепочки из одного или более нулей, разделенные ненулевыми элементами.

program p8_4;

const

n= 10;

A: array[l..n] of Integer = (0, 1, 0, 0, 5, 0, 1,0, 3, 0, 0, 0, 2) ;

var

zero: Boolean;

i, k: integer;

begin

zero:= false;

k:= 0;

for i : = 1 to n do

if A[i] = 0 then

if not zero then begin k := k + 1; zero:= true; end;

else zero:= false;

Writeln(' количество нулевых последовательностей = ', k);

end.