Zahlen verdoppeln

  • Themenstarter Themenstarter Woltlab
  • Beginndatum Beginndatum
W

Woltlab

Gast
Java:
procedure Duplieren
Input: Dezimalziffern zn-1,...z1, z0 der Zahl z
c := 0
i := 0
while i < n do
d := zi + zi + c
if d < 10
then
print d // Ausgaberichtung: links
c := 0
else
print d - 10 // Ausgaberichtung: links
c := 1
i := i + 1
if c ungleich 0
then print c // Ausgaberichtung: links

Kann mir jemand erklären, warum die Einer- und die Zehnerstelle korrekt ermittelt wird??? Das Programm kommt auch ohne Divisionsrest und Abrundungsfunktion aus.

Ich weiß bisher das der Übertrag höchstens 1 sein kann. 9+9=18

Aber mehr kann ich dazu nicht sagen.
 
Was ist denn zum Beispiel n in der while-Schleife wenn ich als Zahl 10 eingebe.

Kann nicht so gut Mathe. Was bedeutet denn zn-1
 
und der Rest ist dann 18 - 10 also 8
Nö, du schreibst 8 hin und 1 ist dein Übertrag. Wie in der Schriftlichen addition (was ja nichts anderes ist).

Was ist denn zum Beispiel n in der while-Schleife wenn ich als Zahl 10 eingebe.

Kann nicht so gut Mathe. Was bedeutet denn zn-1

Du gibst die zahk nicht als ganzes hin, sondern als einzelnte Stellen:
Code:
z = 4567
z+z=9134

z0 = 7
z1 = 6
z2 = 5
z3 = 4
c  = 0
z0 + z0  + c = 7 + 7 + 0 = 14
4 ausgeben, c = 1
z1 + z1 + c = 6 + 6 + 1 = 13
3 ausgeben, c = 1
z2 + z2 + c = 5 + 5 + 1 = 11
1 ausgeben, c = 1
z3 + z3 = 4 + 4 + 1 = 9
9 ausgeben

Genau so würdest du es machen, wenn du es schriftlich rechnen würdest.
 

Zurück
Oben