Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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.

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






Дата публикования: 2014-11-04; Прочитано: 293 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...