Example: Multidimensional dynamic array/ja
English · Español · Français · 日本語
{訳注:新規プロジェクト>コンソールアプリ を選択し、以下のコードを張り付けて実行すると、Outputの結果が出力されます。}
コード
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.出力
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.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
