Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Falscher wert nach wiederholung in while-schleife

Empfohlene Antworten

Veröffentlicht

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?

  • 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

  • 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

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.

  • 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."

  • 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...

  • 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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.