Sign in Join
Wiki copytemporary

Example: Multidimensional dynamic array/ja

English · Español · Français · 日本語

{訳注:新規プロジェクト>コンソールアプリ を選択し、以下のコードを張り付けて実行すると、Outputの結果が出力されます。}

コード

pascal
program project1;

type
  TArr2D = array of array of Integer;

procedure  FillArr2D(Arr: TArr2D);
var
  i, j: Integer;
begin
  for i:=Low(Arr) to High(Arr) do
    for j:=Low(Arr[i]) to High(Arr[i]) do
      Arr[i][j] := i*10 + j;
end;

procedure  ShowArr2D(Arr: TArr2D);
var
  i, j: Integer;
begin
  for i:=Low(Arr) to High(Arr) do
  begin
    Write('Arr[', i, ']:  ');
    for j:=Low(Arr[i]) to High(Arr[i]) do
      Write(Arr[i][j]:2, '  ');
    WriteLn;
  end;
end;

procedure Pause;
begin
  WriteLn;
  Write('...');
  ReadLn;
  WriteLn;
end;

var
  Arr2D: TArr2D;

begin
  SetLength(Arr2D, 5, 3);  // 配列Arr2Dを2次元配列へSetLength
    WriteLn(UTF8ToAnsi('Arr2D を2次元配列に SetLength した後の矩形の動的配列:'));
    WriteLn('-----------------------------------------');
    ShowArr2D(Arr2D);
    Pause;

  FillArr2D(Arr2D);
    WriteLn(UTF8ToAnsi('充填後の矩形の動的配列:'));
    WriteLn('-----------------------------------------');
    ShowArr2D(Arr2D);
    Pause;

  SetLength(Arr2D, 10);  // 配列Arr2Dを1次元配列へSetLength
    WriteLn(UTF8ToAnsi('Arr2Dを1次元配列に SetLength した後の非矩形の動的配列:'));
    WriteLn('----------------------------------------------------------------');
    ShowArr2D(Arr2D);
    Pause;

  SetLength(Arr2D[0], 9);
  SetLength(Arr2D[1], 7);
  SetLength(Arr2D[2], 6);
  SetLength(Arr2D[3], 9);
  SetLength(Arr2D[4], 5);
  SetLength(Arr2D[5], 8);
  SetLength(Arr2D[6], 5);
  SetLength(Arr2D[7], 3);
  SetLength(Arr2D[8], 1);
  SetLength(Arr2D[9], 7);
    WriteLn(UTF8ToAnsi('1次元配列Arr2D に対して、2次元配列に SetLength した後の非矩形の動的配列:'));
    WriteLn('----------------------------------------------------------------------------');
    ShowArr2D(Arr2D);
    Pause;

  FillArr2D(Arr2D);
    WriteLn(UTF8ToAnsi('充填後の非矩形の動的配列:'));
    WriteLn('--------------------------------------------');
    ShowArr2D(Arr2D);
    Pause;
end.

出力

text
Arr2D を2次元配列に SetLength した後の矩形の動的配列:
-----------------------------------------
Arr[0]:   0   0   0
Arr[1]:   0   0   0
Arr[2]:   0   0   0
Arr[3]:   0   0   0
Arr[4]:   0   0   0

...

充填後の矩形の動的配列:
-----------------------------------------
Arr[0]:   0   1   2
Arr[1]:  10  11  12
Arr[2]:  20  21  22
Arr[3]:  30  31  32
Arr[4]:  40  41  42

...

Arr2Dを1次元配列に SetLength した後の非矩形の動的配列:
----------------------------------------------------------------
Arr[0]:   0   1   2
Arr[1]:  10  11  12
Arr[2]:  20  21  22
Arr[3]:  30  31  32
Arr[4]:  40  41  42
Arr[5]:
Arr[6]:
Arr[7]:
Arr[8]:
Arr[9]:

...

1次元配列Arr2D に対して、2次元配列に SetLength した後の非矩形の動的配列:
----------------------------------------------------------------------------
Arr[0]:   0   1   2   0   0   0   0   0   0
Arr[1]:  10  11  12   0   0   0   0
Arr[2]:  20  21  22   0   0   0
Arr[3]:  30  31  32   0   0   0   0   0   0
Arr[4]:  40  41  42   0   0
Arr[5]:   0   0   0   0   0   0   0   0
Arr[6]:   0   0   0   0   0
Arr[7]:   0   0   0
Arr[8]:   0
Arr[9]:   0   0   0   0   0   0   0

...

充填後の非矩形の動的配列:
--------------------------------------------
Arr[0]:   0   1   2   3   4   5   6   7   8
Arr[1]:  10  11  12  13  14  15  16
Arr[2]:  20  21  22  23  24  25
Arr[3]:  30  31  32  33  34  35  36  37  38
Arr[4]:  40  41  42  43  44
Arr[5]:  50  51  52  53  54  55  56  57
Arr[6]:  60  61  62  63  64
Arr[7]:  70  71  72
Arr[8]:  80
Arr[9]:  90  91  92  93  94  95  96

...

関連情報


From the Free Pascal wiki, page "Example: Multidimensional dynamic array/ja", as it stood on 2020-02-14 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.