Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
31
Добавлен:
13.03.2016
Размер:
56.32 Кб
Скачать

Пример3

program Primer3; {Ввод и вывод динамического одномерного массива, размер которого n задается вводом}

Var a:Array of real; n,i:integer; {i – счетчик элементов массива} Begin

writeln(’Input n’); readln(n);

SetLength(a,n); {отводится память под массив} writeln(’Input array ’);

for i:=0 to High(a) do {High(a)=n-1, максимальное значение индекса)} read(a[i]);

readln; {закончен ввод динамического массива} // обработка массива – заглушка

writeln(’ output of dynamic array’); for i:=0 to High(a) do

write (a[i]:7:2, ′ ′ ); writeln;

a:=nil;{ освобождение памяти из-под массива } readln

End.

Пример 4

program Primer4; {Ввод и вывод динамической матрицы, размеры которой n и m задаются вводом}

Var a:Array of Array of real; n,m,i,j:integer; {i,j – счетчики строк и столбцов} Begin

writeln(’Input count of rows’); readln(n); writeln(’Input count of columns’); readln(m); SetLength(a,n,m); {отводится память под матрицу}

writeln(’Input array ’, n, ’*’,m); for i:=0 to n-1 do

for j:=0 to m-1 do read(a[i,j]);

readln; {закончен ввод динамического массива} // обработка матрицы – заглушка

writeln(’ output of dynamic array’); for i:=0 to n-1 do

begin

for j:=0 to m-1 do write (a[i,j]:7:2 , ′ ′ );

writeln;

end;

a:=nil;{ освобождение памяти из-под указателей на строки } readln

End.

Пример 5

program Primer5; {Ввод и вывод динамической матрицы, размеры которой n и m задаются вводом}

Var a:Array of Array of real; n,m,i,j:integer; {i,j – счетчики строк и столбцов} Begin

writeln(’Input count of rows’); readln(n); writeln(’Input count of columns’); readln(m); SetLength(a,n); {отводится память под указатели на строки}

writeln(’Input array ’, n, ’*’,m);

for i:=0 to High(a) do {High(a)=n-1)} begin

Setlength(a[i],m); { отводится память под элементы строки} for j:=0 to High(a[i]) do {High(a[i]=m-1}

read(a[i,j]);

end; readln; {закончен ввод динамического массива} // обработка матрицы – заглушка

writeln(’ output of dynamic array’); for i:=0 to High(a) do

begin

for j:=0 to High(a[i]) do

write (a[i,j]:7:2 , ′ ′ ); writeln;

a[i]:=nil; {освобождение памяти из-под строки} end;

a:=nil;{ освобождение памяти из-под указателей на строки } readln End.

Открытые массивы - формальные параметры-массивы без указания границ

Допускается в списке формальных параметров использовать конструкцию Array of тип без указания границ массивов.

Соответствующим фактическим параметром может быть как динамический, так и статический массив произвольного размера.

Открытые массивы могут быть только одномерными, но их компоненты могут иметь сложный тип.

Элементы открытых массивов нумеруются, начиная с нуля.

Пример 6. Вычисление максимальных значений элементов двух одномерных массивов. Подпрограммы используют открытые массивы.

program Project1;

Var A:Array[1..5] of real; B:Array of real; nb:integer; {длина B} Procedure masin( c:char; Var A:array of real);

Var i:integer; begin

writeln('input vector',c,' size of ',Length(A));

for i:=Low(A) to High(a) do {использование функций Low и High позволяет }

read(A[i]); readln;

{брать в качестве фактических параметров}

end{masin};

{как статические, так и динамические массивы}

Function max( Var A:array of real):real; Var i:integer;mx:real;

begin mx:=a[Low(A)];

for i:=Low(A)+1 to High(A) do if mx<A[i] then

mx:=A[i];

max:=mx

end{max}; begin

masin('A',A); writeln('input nb'); readln(nb); SetLength(B,nb); masin('B',B); writeln('maxa=',max(A),' maxb=',max(b)); readln

end.