Thema: Problem mit Schleifen
-
14.09.2011, 17:42 #1
Problem mit Schleifen
Hallo,
hab jetzt sicher 1 Stunde herumprobiert aber ich finde den Fehler einfach nicht.
Es geht um einen Code für eine WordMix-Anwendung.
PHP-Code:Dim unmixedArr() As String //Gesplitetter Satz
Dim unmixed As String = String.Empty //Normaler satz aus loaded()
Dim mixNumbers As String = String.Empty //MixCombi in Zahlen
Dim zahl As Integer
Dim rnd as Random
Private Sub mix(ByVal satz As String)
//Richtige Zahlencombi = mixNumbers
unmixed = ""
mixNumbers = ""
realmix = ""
unmixed = "Das ist ein Test!"
unmixedArr = unmixed.Split(" ")
//Zahlenreihe für Mix erzeugen; Output = mixNumbers zB. 140235
While Not mixNumbers.Length = unmixedArr.Count
zahl = rnd.Next(0, unmixedArr.Count)
If Not mixNumbers.Contains(zahl) Then
mixNumbers = mixNumbers & Convert.ToString(zahl)
End If
End While
//mixNumbers zeichenweise auslesen und mix ausgeben..
For x = 0 To mixNumbers.Length - 1
Dim AC As Integer = Val(mixNumbers.ElementAt(x))
realmix = realmix & unmixedArr(AC) & "(" & x & ") "
Console.Write(unmixedArr(AC) & "(" & x & ") ")
Next
Console.Write(" - " & mixNumbers & vbCrLf)
End Sub
wird mixNumbers zeichenweise ausgelesen und der Mix Satz für Satz ausgegeben.
Das Problem:
Für fast jeden Mix sind die richtigen Zahlen(mixNumbers) falsch. Der Mix wird zwar ohne Probleme ausgegeben aber die richtige Lösung die in mixNumbers steht stimmt nicht.
Damit Ihr besser versteht was ich meine:
In dem Fall wird der Mix und danach die mixNumbers augegeben.
Ok, schauen wir in die erste Zeile.
ein(0) ist(1) Das(2) Test!(3) - 2103
Dieser Mix passt zum Beispiel.
2te Zeile:
ein(0) Das(1) Test!(2) ist(3) - 2031
Und da haben wir das Problem. mixNumbers ist 2031 aber das stimmt
nicht, sonst wäre ja "Test! ein ist Das" die richtige Lösung.
Mehr brauch ich glaube ich nicht erklären. Einfach das Screen anschauen
und Ihr solltet das Problem erkennen.
Danke im voraus!
MfG
__________________
Hab gerade gesehen das ich anscheinend vergessen habe das Screen mit reinzustellen.
Hab's mal reineditiert, villeicht kann mir ja jetzt wer helfen..
-
15.09.2011, 22:15 #2
- Registriert seit
- 31.01.2011
- Beiträge
- 26
Thanked 211 Times in 94 PostsProblem mit Schleifen
Ich find auf die Schnelle jetzt auch keinen Fehler im Code. VB.Net-Code zu lesen ist sowieso gay (für mich).
Hast du schon den Debug-Modus benutzt? Also Breakpoint an der ersten Stelle setzen und dann Zeile für Zeile debuggen..? <- So wirst du den Fehler mit Sicherheit finden.
-------------------------------------------
Hier kommt der Waynetrain! Er fährt mit deiner Story zum Whateverest !!!
-------------------------------------------
BILD ANZEIGEN [Warum wird das Bild nicht angezeigt?]
-
16.09.2011, 21:17 #3
Problem mit Schleifen
Hallo,
ich versteh echt die Welt nicht mehr.
Ich habe den Code jetzt komplett neu und einfacher geschrieben aber ich hab
noch immer genau das selbe Problem.
PHP-Code:Module Module1
Dim rnd As New Random //Random
Dim z As Integer //Zwischenspeicher für Random
Dim wordcount As Integer = 0 //counter für nummerierung
Dim unmixed As String = "Das ist ein Test!" //ungemixeter Satz
Dim unmixedArr() As String = unmixed.Split(" ") //unmixed gesplittet
Dim mixNumbers As String = String.Empty //zahlen combi für mix(richtige lösung)
Private Sub mix()
z = 0
wordcount = 0
mixNumbers = ""
While mixNumbers.Length <= unmixedArr.Count - 1
z = rnd.Next(0, unmixedArr.Count)
If Not mixNumbers.Contains(z) Then
mixNumbers = mixNumbers & z
Console.Write(unmixedArr(z) & "(" & wordcount & ") ")
wordcount += 1
End If
End While
Console.WriteLine(mixNumbers)
End Sub
Sub Main()
For x = 0 To 10
mix()
Next
Console.ReadLine()
End Sub
End Module
Selbsterklärend...
Ich habe dieses Debugging mit Breakpoint jetzt ehrlich gesagt nicht ausprobiert aber
das kann nicht sein das ich/wir den Fehler in diesem Mini Code nicht finden. Das lustige
ist ja das ich schon einen funktionierenden Code hatte, dann hab ich irgendwas verändert
und jetzt bekomm ich's einfach nicht mehr hin. Ich bin den Code sicher schon 100 mal Zeile
für Zeile durchgegangen und find den Fehler einfach nicht.
MfG
-
17.09.2011, 13:05 #4
- Registriert seit
- 09.11.2011
- Beiträge
- 121
Thanked 129 Times in 46 PostsProblem mit Schleifen
PHP-Code:Dim mixNumbers As String = String.Empty //zahlen combi für mix(richtige lösung)
[0] -> Das
[1] -> ist
[2] -> ein
[3] -> Test!
PHP-Code:z = rnd.Next(0, unmixedArr.Count)
z ist 3 -> Test!
z ist 1 -> ist
z ist 0 -> Das
z ist 2 -> ein
Dein Satz sieht dann so aus: Test!(0) ist(1) Das(2) ein(3)
Die Lösung wäre (korrekt) 2130, bei dir ist es aber 3102, weil du einfach die Zahlen (Index) deiner Variable mixNumbers zuweist.
~>PHP-Code:mixNumbers = mixNumbers & z
Zitat von exception
Zitat von exception
ein ist im Array an der 2. Stelle, daher ist bei der Lösung (mixNumbers) zuerst eine 2 zu sehen. Das Wort Das ist an der 0. Stelle, daher auch die 0 als zweite Ziffer (Key).
MfG
-
02.07.2012, 10:26 #5
Problem mit Schleifen
Hallo und Sorry das ich diesen alten Thread nochmal hochpushe.
Folgendes Problem:
Ich hatte es mittels Brainys Erklärung schon vor längerer Zeit geschafft alles
zum laufen zu bringen. Leider Gottes habe ich die Projektmappe irgendwie verloren
und jetzt bekomm ich's wieder nicht hin. Anscheinend ist es noch zu früh
Lustig ist ja das ich den Code schon 2 mal zum funktionieren brachte aber wie gesagt
hab ich die verdammte Projektmappe verloren XD
Jetzt sitze ich schon wieder seit gut einer Stunde an diesem Snippet und finde den
Fehler nicht
Wäre schön wenn mir nochmal wer helfen könnte. xD
//Edit:
Das Problem ist im 1 bzw. 4 Post zu finden.
-
04.07.2012, 11:55 #6
Problem mit Schleifen
Ich hab den Code jetzt zum 10ten mal neu geschrieben und habe noch immer das
selbe Problem.
PHP-Code:Sub Main()
Dim rnd As New Random
Dim z As Integer = 1337
Dim satzArr() As String = "Das ist ein Test!".Split(" ")
Dim mix As String = String.Empty
Dim numbers As String = String.Empty
While numbers.Length < satzArr.Count
z = rnd.Next(0, satzArr.Count)
If Not numbers.Contains(z) Then
numbers = numbers & z
mix = mix & satzArr(z) & "(" & numbers.Length - 1 & ") "
End If
End While
Console.WriteLine(numbers)
Console.WriteLine(mix)
Console.ReadLine()
End Sub
-
04.07.2012, 15:09 #7
- Registriert seit
- 09.11.2011
- Beiträge
- 121
Thanked 129 Times in 46 PostsProblem mit Schleifen
Deine Variable numbers wird so nicht die Lösung des Rätsels sein, da du nur die Randomwerte (Index) da hinzufügst. (abgesehen davon, dass numbers vom Typ String ist und z ein Integer)
MfG
-
20.07.2012, 11:55 #8
- Registriert seit
- 19.11.2011
- Beiträge
- 2.128
Thanked 1.936 Times in 1.180 PostsProblem mit Schleifen
Hey,
falls das hier noch aktuell sein sollte, ich habs mal eben getippt.
Code:Sub Main() Dim Answer As String = WordmixBreake("Das antibakterielle Laktosepulver löste bei ihm Akne aus.", "aus.(0) antibakterielle(2) löste(6) Das(3) ihm(7) bei(1) Akne(4) Laktosepulver(5)") Console.WriteLine("Antwort: " & Answer) Console.ReadLine() End Sub Private Function WordmixBreake(ByVal RightSentence As String, ByVal Mixed As String) As String Dim Mixxed As String() = Mixed.Split(CChar(" ")) Dim An As String = String.Empty For Each p As String In RightSentence.Split(CChar(" ")) An &= Regex.Match(Mixxed.SingleOrDefault(Function(c) Regex.Replace(c, "\((\d+)\)", String.Empty) = p), "\((\d+)\)").Groups(1).Value Next Return An End Function
Ähnliche Themen
-
[C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Von DMW007 im Forum C++Antworten: 5Letzter Beitrag: 05.01.2017, 09:31 -
TAN Problem!!!
Von Jack DanieLs im Forum Fragen & ProblemeAntworten: 5Letzter Beitrag: 16.03.2013, 21:08 -
[W-Lan] Problem!
Von Microsoft im Forum HardwareAntworten: 3Letzter Beitrag: 22.07.2012, 13:28 -
Skype-Problem: Problem mit dem Wiedergabegerät
Von Scarface im Forum Audio & VideoAntworten: 0Letzter Beitrag: 16.07.2012, 23:58 -
[C#] Arrays und for-Schleifen
Von Snees im Forum .NetAntworten: 4Letzter Beitrag: 19.11.2011, 18:09
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.