vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Visual Basic Express 2015 
Autor: Woidlmaisi
Datum: 21.08.16 11:27

Hallo Zusammen,

Ich müsste aus 5 Labels die größte Zahl und dann die zweitgrößte Zahl ermitteln und dann
die beiden Zahlen zusammenzählen und in einem Textfeld ausgeben.
Bin Anfänger kann mir jemand behilflich sein Danke.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: Manfred X
Datum: 21.08.16 16:41

Hallo!

Die Zahlen in ein Array eintragen, sortieren und
die gewünschte Anzahl der relativ größten Werte addieren.

Private Function SumOfBiggest(Numbers() As Double, _
        NumberOfBiggest As Integer) As Double
 
        Array.Sort(numbers)
 
        Dim nc As Integer = numbers.Length
 
        NumberOfBiggest = Math.Min(NumberOfBiggest, nc)
        NumberOfBiggest = Math.Max(NumberOfBiggest, 1)
 
        Dim sum As Double = 0
        For i As Integer = nc - NumberOfBiggest To nc - 1
            sum += Numbers(i)
        Next i
 
        Return sum
End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: sv00010
Datum: 21.08.16 16:42

Als erstes musst du ein Array oder eine List(Of T) erstellen.
Das Array oder die Liste muss mit einem Zahlen-Typ erstellt werden (z.B. Integer, Long oder so).
Wenn Dezimalzahlen benötigt werden dann Single oder Double.
Dim intArray(4) As Integer
Danach dann die Werte aus den Labels in das Array füllen.
z.B.
 intArray(0) = CInt(Me.Label_Number1.Text)
 intArray(1) = CInt(Me.Label_Number2.Text)
 intArray(2) = CInt(Me.Label_Number3.Text)
 intArray(3) = CInt(Me.Label_Number4.Text)
 intArray(4) = CInt(Me.Label_Number5.Text)
Wenn das Array gefüllt ist, dann das Array sortieren.
 intArray.Sort()
Nach dem Sortieren ist der höchste Wert in intArray(4) und der zweithöchste Wert ist in intArray(3).
Jetzt noch die entsprechenden Werte addieren und dem Ergebnis zuweisen.

z.B.

Dim intResult As Integer
intResult = intArray(3) + intArray(4)
'Ergebnis der Ergebnistextbox zuweisen (Text einfüllen)
Me.TextBox_Result.Text = CStr(intResult)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: Woidlmaisi
Datum: 21.08.16 17:59

Hallo Manfred X,
Hallo sv00010,
Danke erstmal für eure schnellen Antworten,bin gerade dabei Eure Vorschläge umzusetzen.
Habe erst einmal den Vorschlag von sv00010 ausprobiert weil er für mich verständlicher ist
bekomme aber bei dem Befehl "intArray.Sort()" eine Fehlermeldung.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: sv00010
Datum: 21.08.16 21:28

Woidlmaisi schrieb:
Zitat:


bekomme aber bei dem Befehl "intArray.Sort()" eine
Fehlermeldung.

Alternativ kannst du zum sortieren auch
System.Array.Sort(intArray)
verwenden.

https://msdn.microsoft.com/de-de/library/6tf1f0bc(v=vs.110).aspx
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: Manfred X
Datum: 22.08.16 06:20

Hallo!

Einige ergänzende Hinweise:

Bei Übertragung der vom Benutzer in die Labels eingetragenen
Zeichenfolgen, sollte die "TryParse"-Methode des numerischen
Datentyps verwendet werden (Sicherstellung, daß die Zeichenfolge
eine gültige Zahl des geforderten Typs ergibt).

Bei Verwendung mehrerer Labels kann man Referenzen in einer List(of Label)
verwalten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: Woidlmaisi
Datum: 22.08.16 17:37

Danke euch beiden für eure Hilfe!!!
jetzt funktioniert es auch mit dem Sortieren.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: effeff
Datum: 26.08.16 15:21

Gibt das sortierte Array die Nullbasiertheit auf? Wenn ich folgendes teste, muss ich bei der Ausgabe des sortierten Arrays nicht von 0 - 9, sondern von 1 - 10 ausgeben lassen:

Public Class Form1
 
    Dim arr(10) As Integer
    Dim i As Integer = 0
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        arr(0) = 6
        arr(1) = 9
        arr(2) = 7
        arr(3) = 5
        arr(4) = 1
        arr(5) = 3
        arr(6) = 4
        arr(7) = 2
        arr(8) = 8
        arr(9) = 0
 
        For i = 0 To 9
            lstOriginal.Items.Add(arr(i))
        Next
 
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        System.Array.Sort(arr)
 
        For i = 1 To 10
            lstSortiert.Items.Add(arr(i))
        Next
 
    End Sub
End Class

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: Manfred X
Datum: 26.08.16 16:31

Dim arr(10) As Integer 'Obergrenze !!!

Aufklärung: Du deklarierst dadurch ein Array der Länge 11 (0-10).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Visual Basic Express 2015 
Autor: effeff
Datum: 27.08.16 10:57

Donnerschlag... Ich war bisher immer davon ausgegangen, die ANZAHL der Elemente zu definieren... Danke Dir!

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Deklaration von Arrays: Element-Indizierung 
Autor: Manfred X
Datum: 27.08.16 17:48

Das war in Visual Basic immer schon so.

Bis VB6 konnte man coden: Dim arr(lbound To ubound) As Typ
In VB.Net gilt in der Dim-Anweisung nur: Dim arr(0 to ubound) As Typ
Oder verkürzt: Dim arr(ubound) As Typ
(lbound, ubound: Integer-Werte, die die Indexgrenzen des Array definieren).

Nicht-nullbasierte (auch mehrdimensional indizierte) Arrays lassen sich
aber erstellen:
Dim myarr As Array = _
Array.CreateInstance(GetType(Integer), _
                     New Integer() {11, 17}, _
                     New Integer() {-5, -8})
In diesem Beispiel entsteht ein zweidimensionales Integer-Array, das in der ersten
Dimension von -5 bis +5 und in der zweiten Dimension von -8 bis +8 indiziert
werden kann.
myarr.GetLowerBound(0) liefert -5, myarr.getUpperBound(0) liefert 5.
myarr.GetLowerBound(1) liefert -8, myarr.getUpperBound(1) liefert 8.
Im zweiten Parameter dieser Methode ist die Länge der Dimension(en) anzugeben.
Der dritte Parameter bestimmt die Index-Untergrenze der Dimension(en).

Nicht verwirren lassen: Die IDE zeigt die Elementindices evt. (VB2010)
null-basiert an. Das hat für die Gestaltung des Codes (Indizierung) nichts
zu bedeuten !!!!

Wichtig: Bei Verwendung der ReSize-Methode der Arrayklasse ist die neue Länge
des 1D-Array anzugeben, nicht die Index-Obergrenze.

Beitrag wurde zuletzt am 27.08.16 um 18:01:53 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Deklaration von Arrays: Element-Indizierung 
Autor: effeff
Datum: 28.08.16 16:57

Danke Dir für Deine Erklärung! Da die meisten Arrays, die ich bisher brauchte, nicht vorher definiert waren, sondern einem Split entstammten, war mir die Dimensionierung irgendwie falsch in die Gehirnwindungen eingebrannt...

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Deklaration von Arrays: Element-Indizierung 
Autor: sv00010
Datum: 28.08.16 18:26

effeff schrieb:
Zitat:

Danke Dir für Deine Erklärung! Da die meisten Arrays, die ich
bisher brauchte, nicht vorher definiert waren, sondern einem
Split entstammten, war mir die Dimensionierung irgendwie
falsch in die Gehirnwindungen eingebrannt...

Nein, das ist schon verständlich, weil bei C# ist es nämlich nicht so.
Das ist ganz speziell nur bei VB.NET so.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel