Seite 1 von 1

Array inhalte vergleichen

Verfasst: 03.01.2014 12:34
von gnaps
Hallo Forum,

wie kann man den größten wert in einem Array ermitteln?

Ich habe ein Array mit 3 Ganzzahlen und benötige hier die Größte Zahl.
Gibt es da eine einfache Abfrage oder muss ich alles mit IF vergleichen ?

Gruß
gnaps

Re: Array inhalte vergleichen

Verfasst: 03.01.2014 12:36
von RSBasic
@gnaps
Du kannst es auf- oder absteigend sortieren und dann den letzten bzw. ersten Eintrag auslesen.

Re: Array inhalte vergleichen

Verfasst: 03.01.2014 17:40
von Danilo
Ohne Sortierung geht man das Arrays einfach durch und gibt die größte gefundene Zahl zurück.

Code: Alles auswählen

Procedure.i GroessteZahlImIntegerArray( Array a.i(1) )
    elemente = ArraySize( a() )
    If elemente >= 0
        ergebnis = a(0)
        For i = 0 To elemente
            If a(i) > ergebnis
                ergebnis = a(i)
            EndIf
        Next
        ProcedureReturn ergebnis
    EndIf
EndProcedure

Procedure.i KleinsteZahlImIntegerArray( Array a.i(1) )
    elemente = ArraySize( a() )
    If elemente >= 0
        ergebnis = a(0)
        For i = 0 To elemente
            If a(i) < ergebnis
                ergebnis = a(i)
            EndIf
        Next
        ProcedureReturn ergebnis
    EndIf
EndProcedure


Dim arr.i(2)
arr(0) = 14
arr(1) = 768
arr(2) = -5

Debug GroessteZahlImIntegerArray( arr() )
Debug KleinsteZahlImIntegerArray( arr() )

Debug "------------"

Dim arr2.i(100)

For i = 0 To 100
    arr2(i) = Random(2000)
Next i

Debug GroessteZahlImIntegerArray( arr2() )
Debug KleinsteZahlImIntegerArray( arr2() )

Re: Array inhalte vergleichen

Verfasst: 03.01.2014 19:21
von Andreas21
oder einfach so:
Erstellung eines 2 Array als Kopie, damit die Indexe des Array nicht verändert werden.

Code: Alles auswählen

Dim Array1.i(41000)
Dim size.i

For t = 0 To 4100
  Array1(t) = Random(100000)
Next

size = ArraySize(Array1())
Dim Array2.i(size)
CopyArray(Array1(), Array2())
SortArray(Array2(), #PB_Sort_Ascending)

Groestes = Array2(size)
Kleinstes = Array2(0)

FreeArray(Array2())

Re: Array inhalte vergleichen

Verfasst: 04.01.2014 00:08
von gnaps
Hallo Forum,

Danke an RSBasic, Deine Antwort hat mir geholfen und reicht aus.
RSBasic hat geschrieben: Du kannst es auf- oder absteigend sortieren und dann den letzten bzw. ersten Eintrag auslesen.
Mein Array ist nur ein Contaner für drei Werte da spielt die Sortierung keine Rolle.
Alles andere wäre zu aufwendig.

Gruß
gnaps