using System;

public class MyProgram
{
    public static void Main(string[] args)
    {
        // Zu Beginn werden die Variablen für die acht Koordinaten, jeder der vier Punkte besitzt, eine y und x Koordinaten, deklariert.
        // Koordinaten für A (x1,y1)
        double x1;
        double y1;
        
        // Koordinaten für B (x2,y2)
        double x2;
        double y2;
        
        // Koordinaten für C (x3,y3)
        double x3;
        double y3;
        
        // Koordinaten von P(x,y)
        double x;
        double y;
        
        // Jetzt werden die Koordinaten für A abgefragt, zuerst der X-Wert und dann der Y-Wert.
        Console.WriteLine("X-Koordinate x1 von A(x1,y1)");
        x1 = inputValue();
        Console.WriteLine("Y-Koordinate y1 von A(x1,y1)");
        y1 = inputValue();
        
        // Jetzt die Koordinaten x2 und y2 von B(x2,y2).
        Console.WriteLine("X-Koordinate x2 von B(x2,y2)");
        x2 = inputValue();
        Console.WriteLine("Y-Koordinate y2 von B(x2,y2)");
        y2 = inputValue();
        
        // Am Schluss die Koordinaten von C(x3,y3)
        Console.WriteLine("X-Koordinate x3 von C(x3,y3)");
        x3 = inputValue();
        Console.WriteLine("Y-Koordinate y3 von C(x3,y3)");
        y3 = inputValue();
        
        // Die Koordinaten des Punktes P
        Console.WriteLine("Die X-Koordinate von P(x,y)");
        x = inputValue();
        Console.WriteLine("Die Y-Koordinate von P(x,y)");
        y = inputValue();
        
        // Die eingegebenen Werte werden jetzt an die Funktion isInside übergeben.Der Rückgabewert dieser Funktion ist entweder true oder false. Im Fall, dass sich der Punkt P innerhalb des Dreiecks befindet, gibt die Funktion isInside den Wert true zurück, anderfalls den Wert false.
        if (IsInside(x1, y1, x2, y2, x3, y3, x, y))
        {
            Console.WriteLine("Der Punkt P(" + x + "," + y + ") befindet sich innerhalb des Dreiecks");
        }
        else
        {
            Console.WriteLine("Der Punkt P befindet sich nicht innerhalb des Dreiecks.");
        }
    }
    
    public static double Area(double x1, double y1, double x2, double y2, double x3, double y3)
    {
        // Die Funktion Area berechnet anhand der x und y Koordinaten der Punkte die Fläche der Dreiecke. Und gibt das entsprechende Ergebnis zurück.
        double resultat;
        
        resultat = Math.Abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0);
        
        return resultat;
    }
    
    public static bool IsInside(double x1, double y1, double x2, double y2, double x3, double y3, double x, double y)
    {
        // Die Funktion isInside ruft für die Berechnung der Fläche der Dreiecke die Funktion Area auf, die wiederum anhand der Koordinatenwerte die Fläche der einzelnen Dreiecke berechnet.
        // Zuerst werden die vier Variablen für die Ergebnisse der Flächenberechnung deklariert.
        double a;
        double a1;
        double a2;
        double a3;
        
        // Dann die Boolesche Variable result, die der Rückgabewert der Funktion isInside ist.
        bool resultat;
        
        // Die Fläche des Dreiecks ABC mit Hilfe der Funktion Area berechnen.
        a = Area(x1, y1, x2, y2, x3, y3);
        
        // Die Fläche des Dreiecks PBC mit Area berechnen.
        a1 = Area(x, y, x2, y2, x3, y3);
        
        // Die Fläche des Dreiecks PAC mit Area berechnen.
        a2 = Area(x, y, x1, y1, x3, y3);
        
        // Die Fläche des Dreiecks PAB mit Area berechnen.
        a3 = Area(x, y, x1, y1, x2, y2);
        
        // In der nachfolgenden Fallunterscheidung wird geprüft, ob die Fläche des ursprünglichen Dreiecks (ABC) mit der Summe der drei Dreiecke, die durch die hinzunahme von P gebildet wurden, übereinstimmt. Im Fall, dass die beiden Wert gleich sind, wird der Variablen result der Wert true zugewiesen, andernfalls der Wert false.
        if (a == a1 + a2 + a3)
        {
            resultat = true;
        }
        else
        {
            resultat = false;
        }
        
        return resultat;
    }
    
    // .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;
    }
}
        
        
akzeptieren ablehen

Diese Website verwendet Cookies und Zählpixel, um Ihnen die bestmögliche Nutzung dieser Website zu ermöglichen.Learn more about cookies sehen Sie auch Datenschutz