Hallo, ich habe eine Zahl. diese ist z.b. 1000.
Nun soll diese Zahl durch 2 geteilt werden. Das daraus folgende Ergebnis wieder durch 2
und so weiter.
Das Ergebnis ist, dass die Anzahl der Teilungen angegeben werden sollen.
ALso zum Beispiel so:
Läuft im Hintergrund ab:
1000 / 2 = 500
500 / 2 = 250
250 / 2 = 125
.
.
.
---------------------------------
Gleichzeitig soll dazu dies dementsprechend ausgegeben werden.
1
2
3
.
.
.
----------------------------------
habe es schon auf zig Arten versucht
z.b.
$wert = 1000;
while($wert = 0)
{
$wert = $wert / 2;
}
oder auch
for($wert=1000;$wert>=0;$wert/2)
{ echo $wert; }
habe keine Ahnung wieso das nicht geht
Please help me
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
$c=0;
while($zahl>2&&$zahl%2==0)
{
$zahl=$zahl/2;
$c++
echo "$c<br />";
}
wieso nutzt du denn % also Prozent stat dem geteilt /
das % ist der modulus. ich ging davon aus, daß du nur ganzzahlig teilen willst, also nicht z.b. 3/2 berechnen wolltest, sondern die zahl nur so lange teilen willst, wie das ergebnis ganzzahlig ist.
falls das nicht deine absicht war, so mußt du natürlich eine andere abbruchbedingugn wählen, so wie Apro es angesprochen hat.
Wenn man eine Zahl immer wieder durch 2 dividiert, wird die Zahl immer kleiner, wird jedoch nie null! Irgenwas muss als Abbruchbedingung dienen. Z.b. Solange, bis die Zahl kleiner als 1 wird. Oder bis die Zahl mit 3 Kommastellen anzeigbar ist. Etc.
Ich weiß nicht genau was das Ziel der Funktion sein soll.
Die Schleife von xafford läuft so lange, bis die Division keinen ganzzahligen Wert ergibt, bzw. bis die Zahl den Wert 2 erreicht.
Hmm, kann es sein, dass dein Vorschlag sehr engständig arbeitet Xafford?
Bei Ungeraden Zahlen beispielsweise sollte es probleme geben.
wenn 'Schnurrbart' keine abbruchbedingung angiebt ist er selber schuld
sorry, aber eine abbruchbedingung (break) hat doch nix mit der teilbarkeit ungerader tahlen zu tun ;)
ich mein den allgemeinen begriff abbruchbedingung (nicht nur break). in einem algorithmus kommen oft schleifen und rekursive prozeduren vor. die alle arbeiten auf ein ziel hin. ob jetzt der abbruch durch "break" statt findet wie bei einer endlos-schleife oder durch den 2. therm einer for-schleife (for(anfangswert;negierte_abbruchbedingung;aktion)) ist dabei gleichgültig.
greetings, Apro
Hi,
so wie ich Dich verstanden habe willst Du eine beliebige Zahl durch 2 teilen, bis das Ergebnis grösser 2 ist. Was hälst Du hiervon?
$zahl=1000;
$ergebnis=(log($zahl)/log(2));
$rund_ergebnis=floor($ergebnis);
echo $rund_ergebnis;
Damit kriegst Du das Ergebnis wie oft es geht und kannst dann notfalls eine Schleife drumherum bauen, die Zwischenergebnisse anzeigt?
gruß
computerschlumpf