請教各位為何泡沫排序方式正確,但卻結果錯誤? |
答題得分者是:adonis
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm1.Button1Click(Sender: TObject);
var i,j,Temp:integer;
list:array[1..6] of integer;
s: String;
begin
list[1]:= STRTOINT(Edit1.Text);
list[2]:= STRTOINT(Edit2.Text);
list[3]:= STRTOINT(Edit3.Text);
list[4]:= STRTOINT(Edit4.Text);
list[5]:= STRTOINT(Edit5.Text);
list[6]:= STRTOINT(Edit6.Text);
begin
s:='';
for i := low(list) to high(list)-1 do
begin
for j := low(list) to high(list)-1 do
begin
if List[j] > List[j 1] then
begin
Temp := List[j];
List[j] := List[j 1];
List[j 1] := Temp;
end;
s := s IntTostr(List[j 1]) ',';
Label1.Caption := s;
end;
end;
end;
end;
end.</textarea><br />
請教 各位 delphi 前輩 小弟 運用這種方式 排序對嗎??
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
K1086,您好
將 s := s IntTostr(List[j 1]) ','; Label1.Caption := s; 移掉 在 比較 的 for .. for 之外 加上 Label1.Caption:=''; for i := low(list) to high(list) do Label1.Caption := Label1.Caption IntTostr(List[i]) ','; 再想一想,或許就能調整寫出你覺得更適合的語句了.. 重點在於..你總得要讓它先比完吧? <textarea class="delphi" rows="10" cols="60" name="code">list[1]:= STRTOINT(Edit1.Text); list[2]:= STRTOINT(Edit2.Text); list[3]:= STRTOINT(Edit3.Text); list[4]:= STRTOINT(Edit4.Text); list[5]:= STRTOINT(Edit5.Text); list[6]:= STRTOINT(Edit6.Text); s:=''; for i := low(list) to high(list)-1 do begin for j := low(list) to high(list)-1 do begin if List[j] > List[j 1] then begin Temp := List[j]; List[j] := List[j 1]; List[j 1] := Temp; end; end; end; Label1.Caption:=''; for i := low(list) to high(list) do Label1.Caption := Label1.Caption IntTostr(List[i]) ','; </textarea> 我也在努力學習中,若有錯謬請見諒 ~
------
我也在努力學習中,若有錯謬請見諒。 |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
我覺得很納悶,不知道前面小弟所附上的範例K兄如何理解的?
http://delphi.ktop.com.tw/board.php?cid=30&fid=70&tid=88537 將程式模組化是化簡複雜程式碼的基本,前面範例已經將氣泡排序法的Procedure獨立出來了,你的程式碼卻又硬生生的將它又拆開納入你的程式中,結果又沒將排序的迴圈正確處理以致於排序沒有完成,結果當然不正確!還是養成儘量把程式碼拆解為個別模組,這樣程式比較好維護不易發生錯誤,而且重用性也高! |
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 adonis 文 章=================== K1086,您好 將? s := s IntTostr(List[j 1]) ','; Label1.Caption := s; 移掉 在 比較 的 for .. for 之外 加上 Label1.Caption:=''; for i := low(list) to high(list) do Label1.Caption := Label1.Caption IntTostr(List[i]) ','; 再想一想,或許就能調整寫出你覺得更適合的語句了..? 重點在於..你總得要讓它先比完吧? <textarea class="delphi" rows="10" cols="60" name="code">list[1]:= STRTOINT(Edit1.Text); list[2]:= STRTOINT(Edit2.Text); list[3]:= STRTOINT(Edit3.Text); list[4]:= STRTOINT(Edit4.Text); list[5]:= STRTOINT(Edit5.Text); list[6]:= STRTOINT(Edit6.Text); s:=''; for i := low(list) to high(list)-1 do begin ????for j := low(list) to high(list)-1 do ????begin ???? if List[j] > List[j 1] then ???? begin ????????Temp := List[j]; ????????List[j] := List[j 1]; ????????List[j 1] := Temp; ???? end; ????end; end; Label1.Caption:=''; for i := low(list) to high(list) do ????Label1.Caption := Label1.Caption IntTostr(List[i]) ','; </textarea> 我也在努力學習中,若有錯謬請見諒 ~ ===========>>> 感謝 adonis 您的指導,小弟又學習了一課! ===========>>> 真誠肺腑之言... 小弟雖然是delphi 初學者,但還是懂得如何做人處事,至於誤選__缺席__結案問題,造成大家責言,小弟百分百接受,同時借用本版面向所有前輩深深一鞠躬致歉!以後所有結案一定會慎重小心!謝謝大家... |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
不好意思,你的程式碼好像不對.
<textarea class="delphi" rows="10" cols="60" name="code">list[1]:= STRTOINT(Edit1.Text); list[2]:= STRTOINT(Edit2.Text); list[3]:= STRTOINT(Edit3.Text); list[4]:= STRTOINT(Edit4.Text); list[5]:= STRTOINT(Edit5.Text); list[6]:= STRTOINT(Edit6.Text); s:=''; for i := low(list) to high(list)-1 do //low(list)=1, high(list)=6 begin for j := i 1 to high(list) do //第i個與其後之數值比較 begin if List[i] > List[j] then //由小到大排列 begin Temp := List[i]; //交換 List[i] := List[j]; List[j] := Temp; end; end; end; Label1.Caption:=''; for i := low(list) to high(list) do Label1.Caption := Label1.Caption IntTostr(List[i]) ','; </textarea> note: 未經測試,僅供參考... note2:原來板主已經點出問題所在了...
編輯記錄
jow 重新編輯於 2007-08-05 01:40:25, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |