using System;
public class MyProgram
{
public static void Main(string[] args)
{
// In diesem Programm werden zwei Zahlen miteinander vertauscht, ohne dass eine dritte Variable benötigt wird. Das bedeutet, es wird auch keine temporäre Hilfsvariable benötigt.
// Zu Beginn werden die zwei Variablen a und b deklariert, die dazu dienen, die Werte der zwei Zahlen, welche vertauscht werden sollen, zu speichern.
int a;
int b;
Console.WriteLine("Geben Sie die erste Zahl ein: ");
a = (int) inputValue();
Console.WriteLine("Geben Sie die zweite Zahl ein: ");
b = (int) inputValue();
Console.WriteLine("Die Zahlen werden nun vertauscht");
// Im ersten Schritt wird in der Variable a der Wert der Summe von a und b gespeichert. Also a = a + b.
a = a + b;
// Vor dem zweiten Schritt ist der Wert der Summe von a und b, und der Wert von b bekannt. Mit diesen zwei Werten lässt sich auch der Wert von a berechnen, da a = (a + b) - b ist. Der Wert von a lässt sich nun der Variablen b zuweisen, in der Form b = a - b, was bedeutet b = (a + b) - b = a
b = a - b;
// Da in der Variablen a noch immer die Summe aus a und b (a + b) anstelle von b steht, muss die Summe um a vermindert werden.
// Aufgrund des zweiten Schrittes steht der Wert von a in der Variablen b. Das weitere Vorgehen ist analog zum zweiten Schritt. Und es ist a = a - b = (a + b) - a = b.
a = a - b;
Console.WriteLine("Die neue erste Zahl ist jetzt: " + a);
Console.WriteLine("Die neue zweite Zahl ist jetzt: " + b);
}
// .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;
}
}