import Foundation
/* Für die Zahl, von der die Quersumme berechnet, werden soll, wird die
Variable zahl deklariert. */
var zahl : Int
/* Für das Ergebnis und Zwischenwerte der Quersumme wird die Variable
quersumme deklariert. */
var quersumme : Int
/* Die Variable r ist eine Hilfsvariable, die dazu dient, die einzelnen Ziffern
der mehrstelligen Zahl zwischenzuspeichern. */
var r : Int
/* Die Variable exit sorgt dafür, dass die Schleife beendet wird, wenn die
Quersumme einstellig geworden ist. */
var exit : Boolean
print("Geben Sie ein Zahl, die größer als 10 ist, ein: ")
zahl = Int(readLine()!)!
/* Es ist auch möglich, Quersummen von negativen Zahlen zu berechnen. Dazu wird
hier die boolesche Variable negativ deklariert und mit dem Wert
false initialisiert. */
var negativ : Boolean
negativ = false
/* In der Fallunterscheidung wird geprüft, ob die eingegebene Zahl kleiner
als 0 ist, falls ja, wird der Wert der Variable negativ auf true gesetzt und
die eingegebene Zahl mit -1 multipliziert. Die Zahl ist dann positiv, nach
der Berechnung der Quersumme wird das Ergebnis später wieder
mit -1 multipliziert. */
if zahl < 0 {
negativ = true
zahl = zahl * -1
}
exit = false
while zahl >= 10 && exit == false {
// Ab hier beginnt die eigentliche Berechnung.
quersumme = 0
while zahl > 0 {
/* Solange die Variable zahl größer als 0 ist, wird die letzte Stelle
der Zahl abgeschnitten und in der Variable r gespeichert. */
r = zahl % 10
/* Die Zahl wird durch 10 geteilt, da im Schritte vorher die letzte
Stelle gespeichert wurde. */
zahl = Double(zahl) / 10
// Jetzt werden die Ziffern der Zahl schrittweise addiert.
quersumme = quersumme + r
}
if quersumme >= 10 {
zahl = quersumme
} else {
/* Im Fall, dass die berechnete Quersumme größer als 10 ist, das
bedeutet, die Quersumme ist nicht einstellig, wird die Berechnung
erneut durchlaufen, aber diesmal mit der gefundenen Quersumme als
Startwert. */
exit = true
}
}
print("Die einstellige Quersumme der gebenen Zahl ist: ")
/* Hier wird geprüft, ob die ursprünglich Zahl negativ war, falls ja, wird die
berechnete Quersumme mit -1 multipliziert. */
if negativ {
quersumme = quersumme * -1
}
print(quersumme)