AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Suche im Array

Ein Thema von fr0g · begonnen am 8. Mai 2007 · letzter Beitrag vom 8. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
fr0g

Registriert seit: 11. Dez 2006
28 Beiträge
 
#1

Suche im Array

  Alt 8. Mai 2007, 08:26
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

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!


mfg fr0g

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

Registriert seit: 11. Dez 2006
28 Beiträge
 
#2

Re: Suche im Array

  Alt 8. Mai 2007, 08:42
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!
  Mit Zitat antworten Zitat
Rainer1000

Registriert seit: 7. Mai 2007
20 Beiträge
 
Delphi 7 Personal
 
#3

Re: Suche im Array

  Alt 8. Mai 2007, 08:49
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...
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Suche im Array

  Alt 8. Mai 2007, 08:58
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]);
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Rainer1000

Registriert seit: 7. Mai 2007
20 Beiträge
 
Delphi 7 Personal
 
#5

Re: Suche im Array

  Alt 8. Mai 2007, 09:07
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
  Mit Zitat antworten Zitat
marabu

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

Re: Suche im Array

  Alt 8. Mai 2007, 09:14
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
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#7

Re: Suche im Array

  Alt 8. Mai 2007, 09:15
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...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Suche im Array

  Alt 8. Mai 2007, 16:02
Zitat von Rainer1000:
Zitat:
den kleinsten Wert des Arrays ermitteln und an welcher Position
damit fällt die Min() Lösug weg.
oups.. sorry
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Suche im Array

  Alt 8. Mai 2007, 16:30
mit fällt dabei auf das eigentlich alle geposteten Versionen ein falsches Ergebnis liefern wenn das Array leer ist
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Suche im Array

  Alt 8. Mai 2007, 16:51
Hallo Jens,

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

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 Uhr.
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