1

AMB MyLaps デコーダー P3 プロトコルを使用するアプリケーションを作成しています。

ラップとラップタイムに基づいてレーサーを分類する方法がわかりません。たとえば、1 位の人は 3 周、2 位の人は 2 周したとします。しかし、2 人が同じ膝の上にいる状況を注文するにはどうすればよいでしょうか?

これは、情報を保持するために使用しているレコードです。

type
  TTimingRecord = record
    position: integer;
    transId: integer;
    racerName:  string;
    kartNumber: integer;
    lastPassingN: integer;
    laps: integer;
    lastRTCTime:  TDateTime;
    bestTimeMs: Extended;
    lastTimeMs: Extended;
    gapTimeMs:  Extended;
    splitTimeMs:  Extended;
    timestamp:  TDateTime;
  end;

レーサーごとに新しい記録が作成されます。

私が現在使用しているコードは次のとおりです。

procedure sortRacers();
var
  Pos, Pos2: Integer;
  Temp: TTimingRecord;
  GapTime: Extended;
begin
  for Pos := 0 to length(DriversRecord)-1 do
  begin
    for Pos2 := 0 to Length(DriversRecord)-2 do
    begin
      if(DriversRecord[Pos2].laps < DriversRecord[Pos2+1].laps)then
      begin
        Temp := DriversRecord[Pos2];
        DriversRecord[Pos2] := DriversRecord[Pos2+1];
        DriversRecord[Pos2+1] := Temp;
      end
      else if DriversRecord[Pos2].laps = DriversRecord[Pos2+1].laps then
           begin
             if DriversRecord[Pos2].lastRTCTime > DriversRecord[Pos2+1].lastRTCTime then
             begin
              Temp := DriversRecord[Pos2];
              DriversRecord[Pos2] := DriversRecord[Pos2+1];
              DriversRecord[Pos2+1] := Temp;
             end;
           end;
    end;
  end;

  for pos := 1 to length(DriversRecord) -1 do   //Gap Time
  begin
    if DriversRecord[Pos].laps = DriversRecord[0].laps then
    begin
      DriversRecord[Pos].gapTimeMs := DriversRecord[Pos].lastRTCTime - DriversRecord[0].lastRTCTime;

      DriversRecord[Pos].splitTimeMs := DriversRecord[Pos].lastRTCTime - DriversRecord[Pos-1].lastRTCTime;
    end;
  end;
end;

しかし、あまりうまくいきません:)

4

4 に答える 4

0

これを 2 つの別々の種類として見る方が簡単かもしれません。

バブルソート法についてはご存知でしょうから、ここでは触れません。

ソートで 2 パスを作成します。まず、ラップを並べ替えます。

2 番目に、並べ替えられたラップのリスト全体を実行します。同一のラップ値の配列で開始点と終了点を見つけます。開始点と終了点から再度並べ替えを行いますが、今回はセカンダリ値のみを比較します。同一の値の数が 1 より大きい場合は、すべての同一のセカンダリ値を反復処理します。

于 2013-04-02T20:51:50.297 に答える