Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: Berechnung eines Wertes aus Widerstandsreihe

  Alt 1. Jan 2007, 20:10
Alles Gute im Neuen Jahr, Frank.

Ob das eine wirklich gute Idee ist - innerhalb der binären Suche eine Schrittweite einzuführen? Ich würde das außen vor lassen:

Delphi-Quellcode:
const
  E6: array [0..5] of Integer = (100, 150, 220, 330, 470, 680);

function Find(value: Integer; series: array of Integer; var index: Integer): Boolean;
var
  iLow, iHigh, i, c: Integer;
begin
  Result := False;
  iLow := 0;
  iHigh := High(series);
  while not Result and (iLow <= iHigh) do
  begin
    i := (iLow + iHigh) shr 1;
    if series[i] < value
      then iLow := Succ(i)
      else iHigh := Pred(i);
    Result := series[i] = value;
    if Result then
      iLow := i;
  end;
  index := iLow;
end;


// Test
var
  i, r: Integer;
begin
  Find(500, E6, i);
  if i = Length(E6)
    then r := 10 * E6[0]
    else r := E6[i];
end;
Getippt und nicht getestet.

Freundliche Grüße
  Mit Zitat antworten Zitat