16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

2810 = 3⋅ 8 + 4 = 348<br />

7210 = 1⋅ 64 + 0⋅ 16 + 2 ⋅ 4 + 0 = 10204<br />

= ⋅ + ⋅ + ⋅ + ⋅ + ⋅ + =<br />

53 1 32 1 16 0 8 1 4 0 2 1 110101<br />

10 2<br />

Mit e<strong>in</strong>em Stapel läßt sich die Umrechnung folgen<strong>de</strong>rmaßen unterstützen:<br />

6<br />

7 7<br />

4 4 4<br />

1 1 1 1<br />

leerer Stapel n%8=1 n%8=4 n%8=7 n%8=6<br />

n = 3553 10<br />

n/8=444 n/8=55 n/8=6 n/6=0<br />

n = 444 10<br />

n = 55 10<br />

n = 6 10<br />

n = 0 10<br />

Abb.: Umrechnung von 3553 10 <strong>in</strong> 6741 8 mit Hilfe e<strong>in</strong>es Stapel<br />

Algorithmus zur Lösung <strong>de</strong>r Aufgabe:<br />

1) Die am weitesten rechts stehen<strong>de</strong> Ziffer von n ist n%b. Sie ist auf <strong>de</strong>m Stapel abzulegen.<br />

2) Die restlichen Ziffern von n s<strong>in</strong>d bestimmt durch n/b. Die Zahl n wird ersetzt durch n/b.<br />

3) Wie<strong>de</strong>rhole die Arbeitsschritte 1) und 2) bis ke<strong>in</strong>e signifikanten Ziffern mehr übrig bleiben.<br />

4) Die Darstellung <strong>de</strong>r Zahl <strong>in</strong> <strong>de</strong>r neuen Basis ist aus <strong>de</strong>m Stapel abzulesen. Der Stapel ist zu diesem<br />

Zweck zu entleeren.<br />

Implementierung: Das folgen<strong>de</strong> kle<strong>in</strong>e Testprogramm 304 realisiert <strong>de</strong>n Algorithmus und benutzt dazu<br />

e<strong>in</strong>e Instanz von Stack.<br />

import java.util.*;<br />

public class PR61210<br />

{<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g[] args)<br />

{<br />

<strong>in</strong>t zahl = 3553;<br />

// Dezimalzahl<br />

<strong>in</strong>t b = 8; // Basis<br />

Stack s = new Stack(); // Stapel<br />

do<br />

{<br />

s.push(new Integer(zahl % b));<br />

zahl /= b;<br />

} while (zahl != 0);<br />

while (!s.empty())<br />

{<br />

System.out.pr<strong>in</strong>t(s.pop());<br />

}<br />

System.out.pr<strong>in</strong>tln();<br />

}<br />

}<br />

304 pr61210<br />

425

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!