TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

1. 10. 5.  Работа с большими массивами

            Поскольку суммарный размер всех переменных,  описанных в программе,  не может превышать длины сегмента ( 64 К ),  то использование массивов больших размеров вызывает определенные трудности.  Опишем известный способ "разбиения" двумерного массива с использованием переменных типа ссылка.

program Big_Mas;

CONST N1= 30;  N2= 50;

type M1=  array [1 . . N1 ] of REAL;  { тип M1 - массив переменных вещественного типа}

    M2= array[1..N2] of  ^M1;   { тип M2 - массив ссылок на начальные адреса

                                                                                                    элементов массивов типа M1}

var a1, a2: M2;    { двумерные массивы N1xN2 переменных вещественного типа }

      i, j: word;

BEGIN

  for i:=1 to N2 do New(a1[i]);{ размещение массива в оперативной памяти }

  for i:=1 to N2 do New(a2[i]);

     for j:= 1 to N1 do

     for i:= 1 to N2 do  begin

        a1[i]^[j]:= j + Sin(Pi*i/N2);             { пример расчета значений }

        a2[i]^[j]:= j - Cos(Pi*i/N2)       { элементов двумерных массивов }

                          end;

   for i:= 1 to N2 do Dispose(a1[i]); { освобождение оперативной памяти }

   for i:= 1 to N2 do Dispose(a2[i]);

   Readln;

END.

            Таким образом в оперативной памяти отводится место не под двумерные массивы "a1" и "a2" размером N1xN2,  а под одномерные массивы (размером N2) адресов первых элементов линейных массивов (размером N1).  Операция a1[i]^[j] ( a2[i]^[j] ) называется разыменование переменной (элемента массива).

            Большие двумерные массивы часто применяются при решении "сеточных" задач. 

  1, 1           1, 2          1, 3            1, 4          Пусть дана сетка,  узлы которой пронумерованы

         *      *        *        *    двумя цифрами,  каждая из цифр равна номеру узла

  2, 1         2, 2           2, 3            2, 4       в соответствующем направлении.

         *      *        *        *         При решении задачи требуется хранить значения

  3, 1         3, 2            3, 3          3, 4           некоторых функций в узлах,  т. е.  использовать

         *      *        *        *     элементы двумерных массивов.  Значения индексов

                                                                элементов показывают расположение узла на сетке.

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz