Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0031: Maximum in einem Array ermitteln

 von 

Beschreibung 

Aus Anlaß einer Frage im Forum hier das passende Beispiel zu diesem Thema. Da es in VB keine direkte Funktion zur Ermittelung eines maximalen Wertes gibt (Es sei denn über eine SQL-Abfrage) muss das Feld Element für Element durchsucht werden.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,2 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text1"
' Steuerelement: Listen-Steuerelement "List1"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Dim Feld&()

'### Dies dient nur der Texteingabe und dem Füllen des Feldes
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  Dim Zahl&
  Static CNT%
    If KeyCode = 13 Then
      Zahl = Val(Text1.Text)
      ReDim Preserve Feld(CNT + 1)
      Feld(CNT) = Zahl
      CNT = CNT + 1
      List1.AddItem Trim$(CStr(Zahl))
      Text1.Text = ""
      Call Maximum
    End If
End Sub

Private Sub Maximum()
  Dim X%, MAX&, MAXPos%
  
'### Hier die eigentliche Maximumermittlung ###
    For X = 0 To UBound(Feld)
      If Feld(X) > MAX Then
        MAX = Feld(X) ' Maximum
        MAXPos = X    ' Position des Maximums im Feld
      End If
    Next X
'##############################################
    
    Label3.Caption = MAX
    List1.ListIndex = MAXPos
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 6 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Johannes Mockenhaupt am 31.03.2006 um 18:32

Leider ist noch ein Fehler drin: Das Prg funktioniert nur bei positiven Zahlen, bei negativen Zahlen versagt es.

mfG
Johannes Mockenhaupt

Kommentar von Michael Kupfer am 05.03.2006 um 12:14

Hallo!

Kann man die Maximumsuche auch so abändern, dass es die x-maximalen Werte im Array findet? also z.B. die 5 größten Werte?

Kommentar von Jochen Wierum am 19.08.2003 um 11:25

Hallo,

hier liegt ein Verständnisfehler vor!
Der Tipp ermittelt nicht die "Länge" (also Ubound) des Arrays, sondern dessen größten Wert!

Beispiel:

Dim a(3) As Integer
a(0) = 1: a(1) = 3: a(2) = 2: a(3) = 0


Die Oben vorgestellte Routine würde hier das Element mit der Nummer 1 finden, da dieses das "größte" Element im Array ist.

Wenn man wissen will, wie viele Elemente ein Array hat, geht dies tatsächlich mit Ubound.

Viele Grüße,
Jochen Wierum

Admin @ActiveVB

Kommentar von karl am 10.10.2002 um 22:42

an mephisto,
mit val(Feld(X)) gehts auch für deine Statistik

Kommentar von Jan am 19.08.2002 um 12:44

???
text1.ubound
aber für variablen geht da net auch
ubound(array1)
???

Kommentar von mephisto am 26.06.2002 um 04:28

Ist es meoglich die hoeste Zahl von mehreren verschiedenen Textfeldern zu ermitteln? Mein Programm erhaelt ueber ein Netzwerk Daten ueber eine Abstimmung. Waehrend der Abstimmung werden die Stimmen in einem Textfeld fuer den entsprechenden Kanditaden zusammen gezaehlt. Wie ist es nun aber moeglich nach der Abstimmung per Code den Gewinner zu ermitteln? Kann man dazu obiges Codebeispiel ein bisschen umbauen? Falls ja, bite ich um Hilfe.
mfG mephisto