Sign in Join
Wiki copytemporary

Example: Multidimensional dynamic array/ja: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11{訳注:新規プロジェクト>コンソールアプリ を選択し、以下のコードを張り付けて実行すると、Outputの結果が出力されます。}
22
33### コード
44
55``` pascal
66program project1;
77
88type
99 TArr2D = array of array of Integer;
1010
1111procedure FillArr2D(Arr: TArr2D);
1212var
1313 i, j: Integer;
1414begin
1515 for i:=Low(Arr) to High(Arr) do
1616 for j:=Low(Arr[i]) to High(Arr[i]) do
1717 Arr[i][j] := i*10 + j;
1818end;
1919
2020procedure ShowArr2D(Arr: TArr2D);
2121var
2222 i, j: Integer;
2323begin
2424 for i:=Low(Arr) to High(Arr) do
2525 begin
2626 Write('Arr[', i, ']: ');
2727 for j:=Low(Arr[i]) to High(Arr[i]) do
2828 Write(Arr[i][j]:2, ' ');
2929 WriteLn;
3030 end;
3131end;
3232
3333procedure Pause;
3434begin
3535 WriteLn;
3636 Write('...');
3737 ReadLn;
3838 WriteLn;
3939end;
4040
4141var
4242 Arr2D: TArr2D;
4343
4444begin
4545 SetLength(Arr2D, 5, 3); // 配列Arr2Dを2次元配列へSetLength
4646 WriteLn(UTF8ToAnsi('Arr2D を2次元配列に SetLength した後の矩形の動的配列:'));
4747 WriteLn('-----------------------------------------');
4848 ShowArr2D(Arr2D);
4949 Pause;
5050
5151 FillArr2D(Arr2D);
5252 WriteLn(UTF8ToAnsi('充填後の矩形の動的配列:'));
5353 WriteLn('-----------------------------------------');
5454 ShowArr2D(Arr2D);
5555 Pause;
5656
5757 SetLength(Arr2D, 10); // 配列Arr2Dを1次元配列へSetLength
5858 WriteLn(UTF8ToAnsi('Arr2Dを1次元配列に SetLength した後の非矩形の動的配列:'));
5959 WriteLn('----------------------------------------------------------------');
6060 ShowArr2D(Arr2D);
6161 Pause;
6262
6363 SetLength(Arr2D[0], 9);
6464 SetLength(Arr2D[1], 7);
6565 SetLength(Arr2D[2], 6);
6666 SetLength(Arr2D[3], 9);
6767 SetLength(Arr2D[4], 5);
6868 SetLength(Arr2D[5], 8);
6969 SetLength(Arr2D[6], 5);
7070 SetLength(Arr2D[7], 3);
7171 SetLength(Arr2D[8], 1);
7272 SetLength(Arr2D[9], 7);
7373 WriteLn(UTF8ToAnsi('1次元配列Arr2D に対して、2次元配列に SetLength した後の非矩形の動的配列:'));
7474 WriteLn('----------------------------------------------------------------------------');
7575 ShowArr2D(Arr2D);
7676 Pause;
7777
7878 FillArr2D(Arr2D);
7979 WriteLn(UTF8ToAnsi('充填後の非矩形の動的配列:'));
8080 WriteLn('--------------------------------------------');
8181 ShowArr2D(Arr2D);
8282 Pause;
8383end.
8484```
8585
8686### 出力
8787
88-`Arr2D を2次元配列に SetLength した後の矩形の動的配列:`\
89-`-----------------------------------------`\
90-`Arr[0]:   0   0   0`\
91-`Arr[1]:   0   0   0`\
92-`Arr[2]:   0   0   0`\
93-`Arr[3]:   0   0   0`\
94-`Arr[4]:   0   0   0`\
88+```text
89+Arr2D を2次元配列に SetLength した後の矩形の動的配列:
90+-----------------------------------------
91+Arr[0]: 0 0 0
92+Arr[1]: 0 0 0
93+Arr[2]: 0 0 0
94+Arr[3]: 0 0 0
95+Arr[4]: 0 0 0
9596
96-`...`\
97+...
9798
98-`充填後の矩形の動的配列:`\
99-`-----------------------------------------`\
100-`Arr[0]:   0   1   2`\
101-`Arr[1]:  10  11  12`\
102-`Arr[2]:  20  21  22`\
103-`Arr[3]:  30  31  32`\
104-`Arr[4]:  40  41  42`\
99+充填後の矩形の動的配列:
100+-----------------------------------------
101+Arr[0]: 0 1 2
102+Arr[1]: 10 11 12
103+Arr[2]: 20 21 22
104+Arr[3]: 30 31 32
105+Arr[4]: 40 41 42
105106
106-`...`\
107+...
107108
108-`Arr2Dを1次元配列に SetLength した後の非矩形の動的配列:`\
109-`----------------------------------------------------------------`\
110-`Arr[0]:   0   1   2`\
111-`Arr[1]:  10  11  12`\
112-`Arr[2]:  20  21  22`\
113-`Arr[3]:  30  31  32`\
114-`Arr[4]:  40  41  42`\
115-`Arr[5]:`\
116-`Arr[6]:`\
117-`Arr[7]:`\
118-`Arr[8]:`\
119-`Arr[9]:`\
109+Arr2Dを1次元配列に SetLength した後の非矩形の動的配列:
110+----------------------------------------------------------------
111+Arr[0]: 0 1 2
112+Arr[1]: 10 11 12
113+Arr[2]: 20 21 22
114+Arr[3]: 30 31 32
115+Arr[4]: 40 41 42
116+Arr[5]:
117+Arr[6]:
118+Arr[7]:
119+Arr[8]:
120+Arr[9]:
120121
121-`...`\
122+...
122123
123-`1次元配列Arr2D に対して、2次元配列に SetLength した後の非矩形の動的配列:`\
124-`----------------------------------------------------------------------------`\
125-`Arr[0]:   0   1   2   0   0   0   0   0   0`\
126-`Arr[1]:  10  11  12   0   0   0   0`\
127-`Arr[2]:  20  21  22   0   0   0`\
128-`Arr[3]:  30  31  32   0   0   0   0   0   0`\
129-`Arr[4]:  40  41  42   0   0`\
130-`Arr[5]:   0   0   0   0   0   0   0   0`\
131-`Arr[6]:   0   0   0   0   0`\
132-`Arr[7]:   0   0   0`\
133-`Arr[8]:   0`\
134-`Arr[9]:   0   0   0   0   0   0   0`\
124+1次元配列Arr2D に対して、2次元配列に SetLength した後の非矩形の動的配列:
125+----------------------------------------------------------------------------
126+Arr[0]: 0 1 2 0 0 0 0 0 0
127+Arr[1]: 10 11 12 0 0 0 0
128+Arr[2]: 20 21 22 0 0 0
129+Arr[3]: 30 31 32 0 0 0 0 0 0
130+Arr[4]: 40 41 42 0 0
131+Arr[5]: 0 0 0 0 0 0 0 0
132+Arr[6]: 0 0 0 0 0
133+Arr[7]: 0 0 0
134+Arr[8]: 0
135+Arr[9]: 0 0 0 0 0 0 0
135136
136-`...`\
137+...
137138
138-`充填後の非矩形の動的配列:`\
139-`--------------------------------------------`\
140-`Arr[0]:   0   1   2   3   4   5   6   7   8`\
141-`Arr[1]:  10  11  12  13  14  15  16`\
142-`Arr[2]:  20  21  22  23  24  25`\
143-`Arr[3]:  30  31  32  33  34  35  36  37  38`\
144-`Arr[4]:  40  41  42  43  44`\
145-`Arr[5]:  50  51  52  53  54  55  56  57`\
146-`Arr[6]:  60  61  62  63  64`\
147-`Arr[7]:  70  71  72`\
148-`Arr[8]:  80`\
149-`Arr[9]:  90  91  92  93  94  95  96`\
139+充填後の非矩形の動的配列:
140+--------------------------------------------
141+Arr[0]: 0 1 2 3 4 5 6 7 8
142+Arr[1]: 10 11 12 13 14 15 16
143+Arr[2]: 20 21 22 23 24 25
144+Arr[3]: 30 31 32 33 34 35 36 37 38
145+Arr[4]: 40 41 42 43 44
146+Arr[5]: 50 51 52 53 54 55 56 57
147+Arr[6]: 60 61 62 63 64
148+Arr[7]: 70 71 72
149+Arr[8]: 80
150+Arr[9]: 90 91 92 93 94 95 96
150151
151-`...`
152+...
153+```
152154
153155## 関連情報
154156
155157- [[Dynamic array/ja]]
156158- [Free Pascal Reference guide: Dynamic arrays](http://www.freepascal.org/docs-html/current/ref/refsu15.html#x39-520003.3.1)
157159
158160---
159161*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](/wiki-contact).*
160162Category: Examples/ja

Back to history