Veröffentlicht 14. September 201213 j Hi, Ich habe folgendes Problem: Ich habe eine while-schleife, die mir ein Modulo (also den Rest) von einer Zahl geben soll, diesen Rest dann abziehen und durch den Modulowert teilen soll (damit mann alle Modulo-Werte bis 0 bekommt: Der Code müsste eigentlich funktionieren, tut er aber nicht: while($dez !=0) { $rest=$dez%32; echo "$dez modulo 32: $rest von "; $dez=($dez-$rest)/32; echo $dez."</br>"; }[/PHP] der Wert nach der Schleife ist immer "2000", außerdem geht er auch nicht weiter nach dem 2. Mal. Habe ich vll. irgendeinen "dummen" Anfängerfehler gemacht?
14. September 201213 j Autor der Wert nach der Schleife ist immer "2000" Der erste durchlauf klappt, aber dann soll der Wert $dez (der am ende des ersten durchlaufs überschrieben werden soll, verwendet werden, dieser ist jedoch automatisch 2000
14. September 201213 j Bitte etwas genauer:Welchen Wert hat dez zu Beginn?Was ist die beobachtete Ausgabe?Was ist die erwartete Ausgabe?
14. September 201213 j Autor Ausgangswert bsp: Anfang 31877 ->%32->(Rest) 5 von 996 (nächster Anfangswert: ) erwartet: 996 bekommen 2000, (von 2000 modulo 32) bekommen: 0 von 625 abbruch. 31877 modulo 32: 5 von 996 20000 modulo 32: 0 von 625
14. September 201213 j Kann ich nicht reproduzieren: 31877 modulo 32: 5 von 996 996 modulo 32: 4 von 31 31 modulo 32: 31 von 0[/code] Könntest du bitte die Ausgabe eines konkreten Startwerts hier reinkopieren? Deine Daten passen alle nicht zusammen. 625 * 32 ist 20.000, nicht 2.000.
14. September 201213 j Autor Es gibt keinen korrekten Startwert, zum keinen der in der Ausgabe funktioniert( bei mir) Nun Gut Der Startwert lautet: 31877 die Ausgabe lautet: 31877 modulo 32: 5 von 996 20000 modulo 32: 0 von 625 meine erwartete aber nicht eingetretene Ausgabe lautet: 31877 modulo 32: 5 von 996 996 modulo 32: 4 von 31 31 modulo 32: 31 von 0 Mein Problem ist (wie ganz offensichtlich), dass die Werte einfach nicht stimmen, egal wie sehr ich es hin und her rechne. Auf dem Blatt Papier stimmt es. Und vom Sinn her müsste es stimmen: "Solange $dez nicht gleich 0 ist rechne: Den Modulo von $dez und speichere ihn als $rest. Ziehe den $rest von $dez ab und überschreibe $dez."
14. September 201213 j Autor Funktioniert es bei euch? Könnt ihr das schnell mal implementieren und überprüfen? Vll. habe ich ja meinen Interpreter zerschossen O.o auch wenn ich nicht weis wie ich das gemacht haben soll...
14. September 201213 j Ich habe den Code bei WriteCodeOnline.com/PHP eingegeben und ausgeführt, und es erscheint das gewünschte Ergebnis. Erhältst du bei jedem Startwert 20000?
14. September 201213 j Autor Ja zum von der while-schleife, die sollte ja nicht vom Rest beinflusst werden
14. September 201213 j Autor nein es tritt nicht auf ... edit: Problem gelöst ich hatte nach hunderten Leerzeichen ein return drin stehen, klar dass das nicht funktionieren kann -.- , ich sollte mir angewöhnen nicht mit dem Texteditor zu schreiben
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.