再問:如何將展開的陣列填入另一個陣列 |
尚未結案
|
beta
一般會員 發表:7 回覆:11 積分:3 註冊:2003-01-03 發送簡訊給我 |
根據MIckey版主的Code 我想把他改成輸出成一個array of array of integer; procedure TForm1.Button1Click(Sender: TObject);
原來的COde
procedure ArrayCom(const a1:array of integer;s:string;L:TStrings);
重新宣告
type AA:array of array of integer;
Function ArrayCom(const a1:array of integer;s:string):AA; var i,j,t : integer;
b1,Temp:array of integer;
s1:string;
begin
setlength(Temp,High(a1)+1);
for i:=Low(a1) to High(a1) do Temp[i] := a1[i];
for i:=Low(a1) to High(a1) do begin
t := temp[0];
temp[0] := temp[i];
temp[i] := t;
setlength(b1,High(a1));
for j := 0 to High(b1) do b1[j] := temp[j+1];
問題在此
如何將填入aa< >< > s1 := inttostr(temp[0]) '','';
ArrayCom(b1, s s1, L);
end;
if High(a1)=0 then L.Add(s s1);
end;
var a:array of integer;
i:integer;
begin
SetLength(a,5); //[11,10,6,321,22]
a[0]:=11;a[1]:=10;a[2]:=6;a[3]:=321;a[4]:=22;
Memo1.lines.clear;
ArrayCom(a,Memo1.lines.text,Memo1.lines);
Showmessage(inttostr(Memo1.Lines.count));
end; 現在最主要的問題是loop本身跑的順序跟我要填入array的index不知如何對起來
請各位前輩再度賜教
|
beta
一般會員 發表:7 回覆:11 積分:3 註冊:2003-01-03 發送簡訊給我 |
|
TATSU
版主 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
我看過你的問題,又試驗過你的程式,原來是我在學生時代的數學,不過都忘了一大半,終於在 search engine 找到以下的網址,內裏有講解什麼 arrangement 、derangement 的數學問題,更有 Delphi 原程式碼,你可以慢慢研究。 http://www.delphiforfun.com/programs/math_topics/derangements.htm 那並不完全是你所要的答案,但你稍加更改原程式,應該可以做到你要的效果。
|
beta
一般會員 發表:7 回覆:11 積分:3 註冊:2003-01-03 發送簡訊給我 |
|
TATSU
版主 發表:50 回覆:135 積分:62 註冊:2003-01-16 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
beta 你好, 我又來的... 雖然不是很贊同用 class="code">
procedure TForm1.Button1Click(Sender: TObject);
type Ta=array of integer;
Taa=array of Ta;
var a,s:Ta;
aa:Taa;
i,j:integer;
ss : string;
procedure ArrayCom(const a1:Ta; const s1:Ta; var L:Taa);
var i,j,t : integer;
b1,Temp,Temp1:Ta;
begin
setlength(Temp,High(a1) 1);
for i:=Low(a1) to High(a1) do Temp[i] := a1[i];
for i:=Low(a1) to High(a1) do begin
t := temp[0];
temp[0] := temp[i];
temp[i] := t;
setlength(b1,High(a1));
for j := 0 to High(b1) do b1[j] := temp[j 1];
SetLength(Temp1,High(s1) 2);
for j:=Low(s1) to High(s1) do Temp1[j] := s1[j];
Temp1[High(Temp1)] := Temp[0];
ArrayCom(b1, Temp1 , L);
end;
if High(a1)=-1 then begin
SetLength(L,High(L) 2);
L[High(L)] := s1;
end;
end;
begin
SetLength(a,5); //[11,10,6,321,22]
SetLength(s,0); //[11,10,6,321,22]
a[0]:=11;a[1]:=10;a[2]:=6;a[3]:=321;a[4]:=22;
Memo1.lines.clear;
ArrayCom(a,s,aa);
for i := Low(aa) to High(aa) do begin
ss := '';
for j := Low(a) to High(a) do ss := ss inttostr(aa[i][j]) ',';
Memo1.lines.Add(ss);
end;
Showmessage(inttostr(Memo1.Lines.count));
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |