hallo wiedermal^^
ich sitze jetzt schon 4 Tage an einem Code, der auf ne a6-Seite passt und schaff es einfach nicht, dass der das tut, was ich von ihm verlange, obwohl ich eigentlich meine, dass er so korrekt wäre^^
Erstmal meine Vorraussetzungen:
-->ich habe eine Liste mit Namen und denen zugeordneten Werten [leute as List(of String())]
-->Diese Leute sollen nun ihren Werten nach gleichmäßig auf 4 Gruppen verteilt werden. dazu habe ich eine liste [wert as List(of Integer)] erstellt, welche den verwendeten Index der leute-Liste angibt.
Ich dachte mir also:
Du gehst in einer Schleife x alle Elemente der 4 Gruppen durch. Gruppeneinteilung erfolgt später. vorerst reicht ein einfaches List(of) für alle Gruppen. Dann bestimmst du, falls vorhanden, den Wert des bereits an der aktuellen Stelle verwendeten Index und fängst die nächste Schleife y genau einen Index später an. Die Schleife y geht nun alle möglichen Namen durch und prüft, ob die Indices bereits in der Liste vorhanden sind [wert.contains(y)], addiert dann den Index zu der wert-Liste [wert.add(y)], üerprüft dann, ob innerhalb der aktuellen Gruppe die Summe aller namenswerten / 4 überstiegen wird [pruffer(x)] und beendet sich bei falsch. Andernfalls entfernt sie das Element wieder [wert.remove(y)] und überprüft, ob das Ende der y-Schleife erreicht wurde. Wenn ja, dann setzt Sie die x-Schleife um 2 zurück [ x-=2]
also sowas wie ein Backpropagination-System.
mein Code sieht wiefolgt aus:
Button1_Click:
For x As Integer = 0 To leute.Count - 1
Dim anf As Integer
If wert.Count > x + 1 Then anf = wert(x + 1)
For y As Integer = anf To leute.Count - 1
If wert.Contains(y) Then Continue For
wert.Add(y)
If pruffer(x) = False Then Exit For
wert.Remove(y)
If y = leute.Count - 1 Then x -= 2
Next
Next pruffer:
(durch ist die schon berechnete Summe aller namenswerte / 4)
Public Function pruffer(ByVal Q As Integer) As Boolean
Dim qu As Integer
If Q <= leute.Count / 4 - 1 Then
For x As Integer = 0 To leute.Count / 4 - 1
If wert.Count > x Then qu += leute(wert(x))(1)
Next
ElseIf Q > leute.Count / 4 - 1 And Q <= leute.Count / 4 * 2 - 1 Then
For x As Integer = leute.Count / 4 To leute.Count / 4 * 2 - 1
If wert.Count > x Then qu += leute(wert(x))(1)
Next
ElseIf Q > leute.Count / 4 * 2 - 1 And Q <= leute.Count / 4 * 3 - 1 Then
For x As Integer = leute.Count / 4 * 2 To leute.Count / 4 * 3 - 1
If wert.Count > x Then qu += leute(wert(x))(1)
Next
Else
For x As Integer = leute.Count / 4 * 3 To leute.Count / 4 * 4 - 1
If wert.Count > x Then qu += leute(wert(x))(1)
Next
End If
If qu > durch Then pruffer = True
End Function aktuell prüfe ich das mit einer Liste, deren Werte wiefolgt aussehen:
0,6,5,1,4,2,3,3,2,2,2,2
es ist also möglich, zu einer Lösung zu kommen.
Die mir zurückgegebene Liste der Stärken sieht jedoch wiefolgt aus:
0,6,1,5,2,4,3,3,2,2,2,2
wobei doch eigentlich die Gruppen
[0,6,1],[5,2,4],[3,3,2],[2,2,2]
jeweils 8 ergeben sollten^^
kann mir bitte ein guter Logiker, oder sonst jemand, der den Fehler sieht helfen?^^
__________________________________
irgendwas wird schon rauskommen^^ |