<?php
# Die folgende Funktion wird immer dann aufgerufen, wenn in ihr Programm Daten eingegeben werden..
# Sie können sie ändern, um andere Quellen zu verwenden.
function input() {
return fgets(STDIN);
}
# Für die Zahl, von der die Quersumme berechnet, werden soll, wird die Variable zahl deklariert.
# Für das Ergebnis und Zwischenwerte der Quersumme wird die Variable quersumme deklariert.
# Die Variable r ist eine Hilfsvariable, die dazu dient, die einzelnen Ziffern der mehrstelligen Zahl zwischenzuspeichern.
# Die Variable exit sorgt dafür, dass die Schleife beendet wird, wenn die Quersumme einstellig geworden ist.
echo "Geben Sie ein Zahl, die größer als 10 ist, ein: " . PHP_EOL;
$zahl = input();
# 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.
$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;
}
$var_exit = False;
while ($zahl >= 10 && $var_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 = $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.
$var_exit = True;
}
}
echo "Die einstellige Quersumme der gebenen Zahl ist: " . PHP_EOL;
# 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;
}
echo $quersumme . PHP_EOL;
?>