掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
配列の順位付け (ID:150888)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
解決になっていますが・・・コムソートで構造体としてソートしたサンプルです。Delphi8で動くのかどうかですが。 コムソートの参考 https://mam-mam.net/delphi/comb_sort.html type TJt=record jun:integer; ten:integer; end; implementation {$R *.dfm} uses Math; //コムソート procedure CombSort(var a:array of TJt); //二つのTJt構造体の値を入れ替える procedure SwapTJt(var v1,v2:TJt); var sw:TJt; begin sw:=v1; v1:=v2; v2:=sw; end; var between:Integer;//間隔 i,l,h:integer; begin l:=Low(a); h:=High(a); //初期の比較間隔 between:=Math.Floor((h-l+1)/1.3); while between>0 do //比較間隔が0になったら終了 begin i:=l; while h>=(i+between) do begin if (a[i].ten<a[i+between].ten) then SwapTJt(a[i],a[i+between]); inc(i); end; //比較間隔を小さくする(1.3で割って切り捨て) between:=Math.Floor(between/1.3); end; end; procedure TForm1.Button1Click(Sender: TObject); var jt:array of TJt; i:Integer; begin SetLength(jt,5); jt[0].ten:=41; //HFUKUSHI様のご指摘箇所 jt[1].ten:=84; //HFUKUSHI様のご指摘箇所 jt[2].ten:=48; //HFUKUSHI様のご指摘箇所 jt[3].ten:=98; //HFUKUSHI様のご指摘箇所 jt[4].ten:=33; //HFUKUSHI様のご指摘箇所 CombSort(jt); for i := Low(jt) to High(jt) do jt[i].jun:=i+1; for i := Low(jt) to High(jt) do Memo1.Lines.Add( Format('順位:%d 点数:%d',[jt[i].jun,jt[i].ten]) ); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.