studyklar
GdI 1 · Übungsblatt 6 · Aufgabe 4

Quersumme mit Division und Rest: die while-Schleife

Die Quersumme einer Zahl ist die Summe ihrer Ziffern. Ein Programm bekommt aber nur die Zahl 4711, nicht die einzelnen Ziffern 4, 7, 1, 1. Die Ziffern holt es mit zwei Rechenarten heraus: dem Rest bei Division durch 10 und der Division durch 10. Rechts steht das Programm, die Zeilen zum aktuellen Schritt sind hervorgehoben. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 6.4

Schreiben Sie ein Java-Programm A6_4, welches für eine positive ganze Zahl n die Quersumme ermittelt.

Hinweise:

  • Verwenden Sie dazu nur die Operationen Division, Rest und Addition.
  • Orientieren Sie sich auch hier an der Divisionsmethode aus Kapitel 1.

Das Programm liest eine positive ganze Zahl n und gibt ihre Quersumme aus. Erlaubt sind nur drei Rechenarten: Division, Rest und Addition. Die Zahl in einen Text umwandeln und Zeichen zählen ist also nicht gemeint.

Merke: x % 10 ist die letzte Ziffer von x, x / 10 ist x ohne die letzte Ziffer. Wiederholt man beides, bis x = 0 ist, kommt jede Ziffer genau einmal vorbei.
  1. Klären, was die Quersumme ist.
  2. Die letzte Ziffer mit dem Rest holen.
  3. Die letzte Ziffer mit der Division abschneiden.
  4. Beides in einer while-Schleife wiederholen.
  5. Die Ziffern in einer Summe sammeln.
  6. Einlesen und Ausgabe ergänzen.
  7. Mit 4711 von Hand durchspielen.
  8. Das Programm ausführen.

Was die Quersumme ist

Quersumme von 4711
4+7+1+1=134 + 7 + 1 + 1 = 13

Man zählt die Ziffern der Zahl zusammen. Bei 4711 sind das die Ziffern 4, 7, 1 und 1, die Quersumme ist 13. Von Hand liest man die Ziffern ab. Das Programm hat dagegen nur eine Zahl in einer int-Variablen. Die nächsten zwei Schritte zeigen, wie es trotzdem an die Ziffern kommt.

Die letzte Ziffer: Rest bei Division durch 10

Zerlegen in Zehner und Rest
4711=471⋅10+1⇒4711 % 10=14711 = 471 \cdot 10 + 1 \qquad\Rightarrow\qquad 4711 \,\%\, 10 = 1

4711 ist 471 Zehner und 1 übrig. Das „übrig“ ist der Rest bei Division durch 10, und es ist genau die letzte Ziffer. In Java schreibt man den Rest mit % (sprich „modulo“): 4711 % 10 ergibt 1.

Aus Skript 4, Folie 4-24 („Arithmetische Ausdrücke“): % ist der Modulo-Operator, er liefert den Divisionsrest. Bei ganzen Zahlen teilt / ohne Rest.
Noch 7 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

xx div 10x mod 10Leserichtung
47114711
471471
4747
404

Reste von unten nach oben lesen:471110 = 471110

public class A6_4 {     public static void main(String[] args) {        Out.print("n = ");        int n = In.readInt();         int x = n;        int summe = 0;        while (x > 0) {            summe = summe + x % 10;            x = x / 10;        }         Out.println("Quersumme von " + n + ": " + summe);    }}
LegendeDie Zeile unter der Tabelle liest die Reste von unten nach oben als Zahl. Mit 10 kommt dabei 4711 selbst heraus; für die Quersumme werden die Reste nicht gelesen, sondern addiert.Oben die Divisionsmethode für 4711 mit 10 statt 2, unten nur das Gerüst von A6_4.