using System;
public class MyProgram
{
public static void Main(string[] args)
{
// Für die Zahl, von der die Quersumme berechnet, werden soll, wird die Variable zahl deklariert.
int zahl;
// Für das Ergebnis und Zwischenwerte der Quersumme wird die Variable quersumme deklariert.
int quersumme;
// Die Variable r ist eine Hilfsvariable, die dazu dient, die einzelnen Ziffern der mehrstelligen Zahl zwischenzuspeichern.
int r;
// Die Variable exit sorgt dafür, dass die Schleife beendet wird, wenn die Quersumme einstellig geworden ist.
bool exit;
Console.WriteLine("Geben Sie ein Zahl, die größer als 10 ist, ein: ");
zahl = (int) inputValue();
// 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.
bool negativ;
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 = (int) (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 = (int) ((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;
}
}
Console.WriteLine("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 = (int) (quersumme * -1);
}
Console.WriteLine(quersumme);
}
// .NET kann nur einzelne Zeichen oder ganze Zeilen aus der Konsole lesen.
// Die folgende Funktion löst das Problem.
private static double inputValue()
{
double result;
while (!double.TryParse(Console.ReadLine(), out result));
return result;
}
}