Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Suche im Array (https://www.delphipraxis.net/91643-suche-im-array.html)

fr0g 8. Mai 2007 07:26


Suche im Array
 
Erstmal ein schönen guten Morgen an alle.

So also ich hab jetzt eine Anfängerfrage... Manchmal sieht man den Wald vor lauter Bäumen nicht.

Folgendes Problem:
Ich habe im Programm ein array

Delphi-Quellcode:
VAR f,h,g:array[0..8]of extended;
Durch Berechnung von f kommen für die verschiedenen Felder von f auch verschiedene Werte bei herraus. Jetzt möchte ich gerne den kleinsten Wert des Arrays ermitteln und an welcher Position dieser zu finden ist. Dabei soll aber nicht das Array der größe nach sortiert werden weil die Postion des kleinesten Wertes im Array wichtig ist.

Hoffe es kann mir jemand helfen! :roteyes:


mfg fr0g

P.S.: Selbst über Google oder hier im Forum hab ich keine klare Antwort gefunden.

fr0g 8. Mai 2007 07:42

Re: Suche im Array
 
Gut. Hat sich erledigt. Hab das array als Integer deklariert und extended in integer umgewandelt...
Das schreib ich dann in eine ListBox und such mir da den kleinsten Wert herraus.

Trotzdem THX!


P.S.: Könnt ja trotzdem das hier beantworten. Würde mich mal interessieren!

Rainer1000 8. Mai 2007 07:49

Re: Suche im Array
 
jetz nur mal ganz schell hingeschusselt würd ich das so machen:

Delphi-Quellcode:
function Suchen: byte //byte reicht wenn das Array von 1-8 geht...
var i: Byte;
begin
  suchen:=1;
  for i:= 2 to 8 do
    begin
      if f[i]<f[i-1]
        then
          suchen:=i
    end;
end;
Jetz müsste man noch fehler ausschließen wie leeres oder halbvolles Array, evt. beim aufruf noch übergeben welches array...

TeronG 8. Mai 2007 07:58

Re: Suche im Array
 
Imho schöner: (und sicherer falls man mal das Array erweitert/ändert/dynamisch Macht
Delphi-Quellcode:
for i := low(f) to high(f) do
begin
end;
Wenn du nur den kleinsten Wert aber nicht die Position des Wertes brauchst ist Min(a,b) auch mal nen Blick wert.

z.B. so in der art:
Delphi-Quellcode:
var Kleinst : int;

Kleinst := MaxInt; // sonst ist das Ding von anfang an schon 0 ...
for i := low(f) to high(f) do Kleinst := min(Kleinst,f[i]);

Rainer1000 8. Mai 2007 08:07

Re: Suche im Array
 
Zitat:

den kleinsten Wert des Arrays ermitteln und an welcher Position
damit fällt die Min() Lösug weg.

das mit dem dynamischen Begrenzungen hab ich so übrigens noch nie gesehen, aber uss ich mir mal merken

marabu 8. Mai 2007 08:14

Re: Suche im Array
 
Hallo,

wenn die Randbedingungen stimmen, dann ist eine sequentielle Suche im Array vertretbar:

Delphi-Quellcode:
function IndexOfMin(const Data: array of Integer): Integer;
var
  i: Integer;
begin
  Result := High(Data);
  for i := Low(Data) to Pred(High(Data)) do
    if Data[Result] > Data[i] then
      Result := i;
end;
Ist das Array groß und wird das Minimum öfter lokalisiert, dann sollte ein sortiertes Index-Array erstellt werden.

Grüße vom marabu

turboPASCAL 8. Mai 2007 08:15

Re: Suche im Array
 
Eine einfache Lösung könnte so aussehen:

Delphi-Quellcode:
type
  TArray8 = Array [0..8] of integer;

var
  f, h, g: TArray8;

function FindMinValueOfArray(aArray: TArray8): Integer;
var
  i, Value, idx: Integer;
begin
  Value := High(Integer);
  for i := 0 to High(aArray) do
    if Value > aArray[i] then
    begin
      Value := aArray[i];
      idx := i;
    end;
  Result := idx;
end;

procedure IrdendWas...
var
  MinWert, ArrayIndex: Integer;
begin
  //...

  ArrayIndex := FindMinValueOfArray(g);
  MinWert   := g[ArrayIndex];

  //...
end;
Wobei zu bedenken ist das doppelte Werte im Array nicht beachted werden.

// Edit: Ei verflixt, marabu war ein Tick schneller... ;)

TeronG 8. Mai 2007 15:02

Re: Suche im Array
 
Zitat:

Zitat von Rainer1000
Zitat:

den kleinsten Wert des Arrays ermitteln und an welcher Position
damit fällt die Min() Lösug weg.

:oops: oups.. sorry

SirThornberry 8. Mai 2007 15:30

Re: Suche im Array
 
mit fällt dabei auf das eigentlich alle geposteten Versionen ein falsches Ergebnis liefern wenn das Array leer ist :mrgreen:

Hawkeye219 8. Mai 2007 15:51

Re: Suche im Array
 
Hallo Jens,

was ist falsch daran, im Fall eines leeren Arrays den Indexwert -1 zu liefern?

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz