Höchsten Wert eines Arrays finden

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Höchsten Wert eines Arrays finden

Beitrag von moTTom »

Hallo,

gibt es eine Möglichkeit den höchsten Wert eines Arrays herauszufinden, wobei ich vor allem die Position des Wertes wissen müsste?

Tom

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Höchsten Wert eines Arrays finden

Beitrag von Bauer321 »

Einfach via for Schleife durchgehen. Entweder hast du einen statischen Array und die Größe des Arrays ist bekannt oder du fragst diese ab.
Dann machst du dir eine Hilfsvariable, die du zu Beginn auf 0 (oder wenn du auch negative zahlen verwendest auf den kleinst möglich Wert) setzt und prüfst bei jedem Wert der größer als der Wert der variable ist, ist dies der Fall setzt du die Variable auf den Wert und speicherst den aktuellen Index in einer weiteren Variable zwischen. Am Ende hast du dann den größten Wert und dessen Index (also die Stelle an der er im Array zu finden ist)
www.mcpatcher.net | www.hoeper.me

moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Re: Höchsten Wert eines Arrays finden

Beitrag von moTTom »

Danke, dass heißt aber, dass es keine vorgefertigte Funktion dazu gibt, hätte ja sein können.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Höchsten Wert eines Arrays finden

Beitrag von Bauer321 »

du kannst ja daraus eine machen.
www.mcpatcher.net | www.hoeper.me

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Höchsten Wert eines Arrays finden

Beitrag von Socke »

moTTom hat geschrieben:Danke, dass heißt aber, dass es keine vorgefertigte Funktion dazu gibt, hätte ja sein können.

Das Problem liegt darin, dass du Arrays von Gott und der Welt anlegen kannst. Eine Funktion müsste sowohl wissen, was denn "Gott" oder "Welt" genau ist und wie man diese vergleicht (es muss eine Größer-/Kleiner-/Gleich-Beziehung zwischen den Elementen geben).

Theoretisch könnte man so etwas für die Pascal-Datentypen im Compiler implementieren (der Compiler entscheidet sich bei der Übersetzung für eine geeignete Methode, das Ziel zu erreichen). Das artet aber ganz schnell in tausenden Funktionen aus (von denen man höchstens 5 Stück in einem Programm braucht), die etwa 10 Prozent der Fälle abdecken, die man damit lösen möchte.

Bauer321 hat geschrieben:Einfach via for Schleife durchgehen. Entweder hast du einen statischen Array und die Größe des Arrays ist bekannt oder du fragst diese ab.

Die Funktionen, die Bauer321 meint, heißen low() und high().

Code: Alles auswählen

 
var
  i: SizeInt;
for i := low(myarray) to high(myarray) do
  whateverfunction(myarray[i]);
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

indianer-frank
Beiträge: 134
Registriert: So 30. Nov 2008, 21:53

Re: Höchsten Wert eines Arrays finden

Beitrag von indianer-frank »

Ein großes Problem ist, daß die Aufgabe unsinnig gestellt bzw. formuliert ist, und deshalb im allgemeinen nicht (eindeutig) lösbar ist: Es gibt eben nicht immer die Position des (Maximal-)Wertes, weil es uU mehrere Positionen geben kann:

Code: Alles auswählen

const
  bsp: array[1..4] of integer = (1,2,0,2)
Der Maximalwert 2 ist eindeutig, er kann leicht ohne eigene Funktionen zB mit math.maxvalue bestimmt werden, aber welche Position(en) willst Du haben? Die erste, die letzte, die am nächsten in der Mitte liegt, alle (als Array, als Set), oder was?

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Höchsten Wert eines Arrays finden

Beitrag von Scotty »

moTTom hat geschrieben:Danke, dass heißt aber, dass es keine vorgefertigte Funktion dazu gibt, hätte ja sein können.

Wenn es Zahlen sind, dann ist die "function MaxIntValue(const Data: array of Integer): Integer;" in der unit Math definiert. Wahrscheinlich liefert die Funktion den Wert und nicht den Index; was du wohl auch suchst. Ansonsten: TList + Sort.

Antworten