掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
配列のなかから指定した順位のものをとりだす (ID:37770)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ほれ unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm4 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private 宣言 } public end; ERangeError = class(Exception) public ErrorCode: Integer; end; resourcestring SOutOfRangeBuffer = 'Indexが配列の範囲を超えています'; SDataNothing = 'その順位のデータは存在しません'; var Form4: TForm4; implementation {$R *.dfm} function Get(Buffer: array of Integer;Index: WORD): Integer; var I,J,K: Integer; E: ERangeError; begin //範囲チェック if (Index < (High(Buffer)-Low(Buffer))+2 ) and (Index > 0) then begin //ソート(データ量が多ければ QuickSort にでも変更) for I:= Low(Buffer) to High(Buffer) do begin for J:= Low(Buffer) to High(Buffer) do begin if Buffer[I] > Buffer[J] then //大きい順 begin K := Buffer[I]; Buffer[I] := Buffer[J]; Buffer[J] := K; end; end; end; //取り出す I := Low(Buffer); J := 1; while (Index <> 0) and (I <= High(Buffer) ) do begin if Buffer[I] <> Result then begin Result := Buffer[I]; Dec(Index); Inc(J); end; Inc(I); end; //該当するデータが存在しない if Index <> 0 then begin E := ERangeError.CreateRes(@SDataNothing); E.ErrorCode := 2; raise E; end; end else begin //配列の範囲外が指定された E := ERangeError.CreateRes(@SOutOfRangeBuffer); E.ErrorCode := 1; raise E; end; end; procedure TForm4.Button1Click(Sender: TObject); var Buffer: array[10..17] of Integer; I: Integer; begin Buffer[10] := 20; // 2 Buffer[11] := 10; // 4 Buffer[12] := 30; // 1 Buffer[13] := -15; // 6 Buffer[14] := 20; // 2 Buffer[15] := 15; // 3 Buffer[16] := 10; // 4 Buffer[17] := -10; // 5 (* Buffer[10] := 1; // 2 Buffer[11] := 2; // 4 Buffer[12] := 3; // 1 Buffer[13] := 4; // 6 Buffer[14] := 5; // 2 Buffer[15] := 6; // 3 Buffer[16] := 7; // 4 Buffer[17] := 8; // 5 *) for I:=0 to 10 do begin try Memo1.Lines.Add (IntToStr(I)+' = '+IntToStr(Get(Buffer,I))); except end; end; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.