Höchsten Wert eines Arrays finden
Höchsten Wert eines Arrays finden
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
gibt es eine Möglichkeit den höchsten Wert eines Arrays herauszufinden, wobei ich vor allem die Position des Wertes wissen müsste?
Tom
-
- 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
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)
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
Re: Höchsten Wert eines Arrays finden
Danke, dass heißt aber, dass es keine vorgefertigte Funktion dazu gibt, hätte ja sein können.
-
- 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
du kannst ja daraus eine machen.
www.mcpatcher.net | www.hoeper.me
-
- Lazarusforum e. V.
- Beiträge: 3178
- 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
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).moTTom hat geschrieben:Danke, dass heißt aber, dass es keine vorgefertigte Funktion dazu gibt, hätte ja sein können.
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.
Die Funktionen, die Bauer321 meint, heißen low() und high().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.
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 134
- Registriert: So 30. Nov 2008, 21:53
Re: Höchsten Wert eines Arrays finden
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:
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?
Code: Alles auswählen
const
bsp: array[1..4] of integer = (1,2,0,2);
-
- 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
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.moTTom hat geschrieben:Danke, dass heißt aber, dass es keine vorgefertigte Funktion dazu gibt, hätte ja sein können.