bar2104

Тру динамический массив

May 15th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.84 KB | None | 0 0
  1. program TrueDynamicArray;
  2. type
  3.     ElemType = integer;         //Наши элементы массива будут типа integer
  4.     TElemType = ^Elemtype;      //Создаем тип ссылки на integer
  5.    
  6.     //Вспомогательная функция, реализующая последовательный доступ к памяти
  7.     //Идем по одному до элемента с номером i и возвращаем его
  8.     function getI( pa:TElemType;i:word):integer;
  9.     var
  10.        j:word;
  11.     begin
  12.         for j:=1 to i-1 do
  13.             inc(pa);
  14.         getI:=pa^; //Не забываем про разыменование
  15.     end;
  16.    
  17.     //Вспомогательная функция, реализующая последовательный доступ к памяти
  18.     //Идем по одному до элемента с номером i и устанавливаем его значение равным val
  19.     procedure setI( pa:TElemType; i:word; val:ElemType);
  20.     var
  21.        j:word;
  22.     begin
  23.         for j:=1 to i-1 do
  24.             inc(pa);
  25.         pa^:=val;   //Не забываем про разыменование
  26.     end;
  27.  
  28. var
  29.    i,n:word; //i - счетчик; n - кол-во элементов массива
  30.    arrayPtr: TElemType; //Указатель на первый элемент массива
  31. begin
  32.     readln(n); // Считываем n с консоли
  33.    
  34.     //Выделяем память под наши нужды начиная с ячейки arrayPtr 8*n байт
  35.     getmem( arrayPtr, sizeof(ElemType)*n);
  36.  
  37.     for i:=1 to n do
  38.       setI(arrayPtr, i, random(10));
  39.  
  40.     for i:=1 to n do
  41.       write(getI(arrayPtr, i ):3);
  42.  
  43.     // Очищаем память начиная с ячейки arrayPtr 8*n байт
  44.     freemem(arrayPtr,sizeof(elemType)*n);
  45. end.
Add Comment
Please, Sign In to add comment