using System;
public class MyProgram
{
public static void Main(string[] args)
{
// Im Folgenden werden drei Variablen, für den Dividenden, den Divisor und den Rest, mit den entsprechenden Bezeichnungen, deklariert. Dabei muss aber beachtet werden, dass die hier gezeigt Form der klassischen Modulo Funktion nur für ganze positive Zahlen definiert ist.
// Für den Dividenden wird die Variable dividend deklariert.
int dividend;
// Für den Divisor wird die Variable divisor deklariert.
int divisor;
// Für den Rest, der übrig bleibt, wird die Variable rest deklariert.
int rest;
Console.WriteLine("Geben Sie den Dividend an:");
dividend = (int) inputValue();
// Wie eingangs bereits erwähnt, ist die klassische Variante der Modulo Berechnung, die hier verwendet wird, nur für ganze positive Zahlen definiert, daher muss sichergestellt werden, dass der Dividend eine positive Zahl ist. Dies erfolgt in einer while Schleife, die im Fall, dass der Dividend keine positive Zahl ist, den Nutzer auffordert eine neue Zahl einzugeben.
while (dividend < 0)
{
Console.WriteLine("Bitte geben Sie einen positiven Dividenden an: ");
dividend = (int) inputValue();
}
Console.WriteLine("Geben Sie den Divisor an:");
divisor = (int) inputValue();
// Um zu verhindern, dass der Versuch unternommen wird durch null zu teilen, wird der Divisor in einer while-Schleife daraufhin überprüft, ob er gleich null ist. Und falls der Divisor gleich null ist, wird der Nutzer dazu aufgefordert eine Zahl, die ungleich null einzugeben.
while (divisor == 0)
{
Console.WriteLine("Bitten geben Sie eine Zahl die ungleich null ist als Divisor an: ");
divisor = (int) inputValue();
}
Console.WriteLine("Rest: ");
// Der Divisionsrest wird ausgehend von der üblichen Formel rest = ( dividend / divisor - INT (dividend / divisor)) * divisor berechnet. Dazu wurde die Formel umgeschrieben in rest = dividend - INT (dividend / divisor) * divisor
rest = dividend - (int) Math.Floor((double) dividend / divisor) * divisor;
Console.WriteLine(rest);
}
// .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;
}
}