Example: Multidimensional dynamic array/ja
From Free Pascal wiki
Jump to navigationJump to searchThe printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
│
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
{訳注:新規プロジェクト>コンソールアプリ を選択し、以下のコードを張り付けて実行すると、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 ...