uthred Geschrieben 14. September 2012 Geschrieben 14. September 2012 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? Zitieren
uthred Geschrieben 14. September 2012 Autor Geschrieben 14. September 2012 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 Zitieren
Klotzkopp Geschrieben 14. September 2012 Geschrieben 14. September 2012 Bitte etwas genauer:Welchen Wert hat dez zu Beginn?Was ist die beobachtete Ausgabe?Was ist die erwartete Ausgabe? Zitieren
uthred Geschrieben 14. September 2012 Autor Geschrieben 14. September 2012 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 Zitieren
Klotzkopp Geschrieben 14. September 2012 Geschrieben 14. September 2012 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. Zitieren
uthred Geschrieben 14. September 2012 Autor Geschrieben 14. September 2012 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." Zitieren
uthred Geschrieben 14. September 2012 Autor Geschrieben 14. September 2012 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... Zitieren
Klotzkopp Geschrieben 14. September 2012 Geschrieben 14. September 2012 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? Zitieren
uthred Geschrieben 14. September 2012 Autor Geschrieben 14. September 2012 Egal welcher Anfangswert, beim 2. Durchgang ist er 20000 Zitieren
Klotzkopp Geschrieben 14. September 2012 Geschrieben 14. September 2012 Ist das wirklich der ganze Code? Zitieren
uthred Geschrieben 14. September 2012 Autor Geschrieben 14. September 2012 Ja zum von der while-schleife, die sollte ja nicht vom Rest beinflusst werden Zitieren
Klotzkopp Geschrieben 14. September 2012 Geschrieben 14. September 2012 Tritt das Problem auch auf, wenn du nur diesen Code allein ausführst? Zitieren
uthred Geschrieben 14. September 2012 Autor Geschrieben 14. September 2012 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.