Arrays und Schleifen

dignsag

Erfahrenes Mitglied
Ich habe folgendes Problem:

Ich brauche eine Funktion, die mir den Index des Arrays zurückgibt der den größten Wert beinhaltet. Zusätzlich soll wenn der größte Wert mehrmals vorkommt der Index zurückgegeben werden der den größten Index hat.

Meine bisherige Lösung sieht so aus:
Funktioniert aber noch nicht so ganz! Kann mir da jemand helfen?

Code:
Function BiggestIdx(ar() As Long) As Integer
    Dim i As Long
    Dim j As Long
    Dim a As Long
    Dim k As Long
    
    a = ar(UBound(ar))
    For i = UBound(ar) To 0 Step -1
        For j = UBound(ar) To 0 Step -1
            If ar(j) > a And j > i Then
                a = ar(j)
                k = j
                Exit For
            End If
        Next
    Next
    
    BiggestIdx = k
End Function
 
Hi.

Warum machst du da 2 Schleifen?

Du mußt doch nur ganz normal das Maximum berechnen und dir dabei den Index merken.

Die zusätzliche Bedingung, das wenn das Maximum mehrfach vorkommt der größte Index zurückgegeben wird bedeutet doch nur, das du in der Schleife beim Vergleich des aktuellen Elementes das Arrays mit dem bisherigen max. Wert nicht auf "echt größer" sondern auf "größer oder gleich" testen mußt.

Dabei seh ich gerade, das du rückwärts durch das Array gehst - das ist allerdings ziemlich ungünstig für die Aufgabe. Mach mal einfach eine Schleife von LBound(array) bis UBound(Array).

Gruß
 
Danke für deine Hilfe, das war die Lösung!

Manchmal steht man so auf der Leitung und verhakt sich so in dem bisherigen Ergebnis das nix mehr geht.

Danke nochmal!
 

Neue Beiträge

Zurück