Announcement

Collapse
No announcement yet.

größten Wert aus Array auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • größten Wert aus Array auslesen

    Hallo Leute,

    ich stehe gerade leider irgendwie auf dem Schlauch.
    Ich möchte den größten Wert aus einem Array mit 7 Werten auslesen.
    Die Werte sollen vorher nicht sortiert werden.

    Bisher sieht mein Code so aus:

    [highlight=vbnet]
    Imports System.Console

    Module abc

    Sub Main()

    Dim MAX as Integer
    Dim ac() as Integer = {19, 125, 43, 200, 11, 2, 84}

    For MAX = 0 To ac.GetUpperBound(0) + 1

    If ac(Max) >= ac(MAX+1).toString Then
    MAX = ac(MAX)

    End If

    Next

    WriteLine("Das größte Element hat den Wert: {0}", MAX)

    End Sub

    End Module
    [/highlight]

    Das Problem ist, das Programm gibt mir als grö0tes Element 126 aus. Klar, weil die 19 kleiner ist als 125 und dann + 1. Hier tut sich auch meine Schranke im Kopf auf...ich weiß, ich müsste das Array erst komplett durchlaufen lassen und dann daraus den größten Wert ermitteln. Ich habe nur grade überhaupt keinen blassen schimmer, wie ich das machen soll. Kann mir vielleicht jemand helfen?

    Gruß
    CherryHH
    Zuletzt editiert von gfoidl; 13.07.2010, 10:02. Reason: Code-Formatierung

  • #2
    So geht's:
    Dim MAX As Integer = -1 ' -1 ist willkürlich, hier könnte auch 0 stehen. Hauptsache MAX wird mit einem kleinen Wert initialisiert.
    Dim i As Integer
    Dim ac() As Integer = {19, 125, 43, 200, 11, 2, 84}

    For i = 0 To ac.GetUpperBound(0)
    If ac(i) > MAX Then
    MAX = ac(i)

    End If
    Next

    WriteLine("Das größte Element hat den Wert: {0}", MAX)
    Das Problem bei deinem Code war die Variable MAX. In einer For-Schleife gibt es immer eine Zählervariable, die automatisch hochgezählt wird. Das war bei dir MAX. In MAX wolltest du aber zugleich den Maximum-Wert speichern, was zu einem Konflikt geführt hat.

    Außerdem muss von 0 bis "ac.GetUpperBound(0)" gezählt werden und nicht bis "ac.GetUpperBound(0) + 1".
    Zuletzt editiert von sic; 13.07.2010, 00:24.

    Comment


    • #3
      Hallo,

      wenn LINQ verwendet werden kann gibts dort die Max-Methode.




      Hallo sic,

      ein kleiner Hinweis: In Bezug auf Leistung ist es besser statt array.GetUpperBound(0) die Length-Eigenschaft zu verwenden da so der Compiler mehr optimieren kann. Auch in Hinblick Lesbarkeit (die noch wichtiger ist) scheint mir array.Length besser.


      mfG Gü
      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

      Comment

      Working...
      X