Лекция: Program Dynam_Memory;

Type

Mas = array [ 1..2 ] of <требуемый_тип_элемента>;

Ms = ^ mas;

Var

A: Ms;

I, NF: integer;

Begin

Writeln ('Введите фактическое число элементов массива');

Readln ( NF );

GetMem ( A, SizeOf ( <требуемый_тип_элемента>)*NF);

For i := 1 to NF do

Begin

Writeln ('Введите ', i, ' -ый элемент массива ');

Readln ( A^ [ i ] )

End;

{ И далее все циклы работы с массивом используют NF}

.... .

FreeMem (a, nf*SizeOf (<требуемый_тип_элемента>));

End.

Рассмотрим пример использования динамического одномерного массива, который используется как двумерный массив. После ввода реальной размерности массива и выделения памяти для обращения к элементу двумерного массива адрес его рассчитывается, исходя из фактической длины строки и положения элемента в строке (при заполнении матрицы по строкам). Требуется найти максимальный элемент в матрице и его координаты.

 

Uses crt;

type t1=array[1..1] of integer;

Var

a:^t1;

n,m,i,j,k,p:integer;

max:integer;

Begin

Clrscr;

write('n='); readln (n);

write('m='); readln (m);

getmem (a,sizeof(integer)*n*m);

for i:=1 to n*m do

read(a^[ i ]);

max:=a^[1]; k:=1; p:=1;

for i:=1 to n do

for j:=1 to m do

if a^[(i-1)*m+j] > max then

Begin

max:=a^[(i-1)*m+j];

k:=i; p:=j

End;

write('строка=',k:2,' столбец=',p:2);

freemem(a,2*n*m);

Readkey;

End.

 

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

 

 


еще рефераты
Еще работы по информатике