C# :: Aufgabe #261

5 Lösungen Lösungen öffentlich

Alle Winkel von einem Dreieck ausrechnen...

Fortgeschrittener - C# von maxi72501 - 06.05.2019 um 15:01 Uhr
Gegeben sind alle Koordinaten. Die Punkte A und B gibt der Benutzer ein und die C Koordinate ist der Koordinaten Ursprung (0, 0).
Anhand der Seiten soll der Flächeninhalt und alle Winkel berechnet werden.

Lösungen:

1x
vote_ok
von Kotgreifer (1100 Punkte) - 08.05.2019 um 16:12 Uhr
Quellcode ausblenden C#-Code
using System;

namespace DreieckRechner
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("A x: ");
            double Ax;
            double.TryParse(Console.ReadLine(), out Ax);

            Console.Write("A y: ");
            double Ay;
            double.TryParse(Console.ReadLine(), out Ay);


            Console.Write("B x: ");
            double Bx;
            double.TryParse(Console.ReadLine(), out Bx);

            Console.Write("B y: ");
            double By;
            double.TryParse(Console.ReadLine(), out By);


            Console.Write("C x: ");
            double Cx;
            double.TryParse(Console.ReadLine(), out Cx);

            Console.Write("C y: ");
            double Cy;
            double.TryParse(Console.ReadLine(), out Cy);


            double a = Math.Sqrt(Math.Pow(Bx - Cx, 2) + Math.Pow(By - Cy, 2));
            double b = Math.Sqrt(Math.Pow(Ax - Cx, 2) + Math.Pow(Ay - Cy, 2));
            double c = Math.Sqrt(Math.Pow(Ax - Bx, 2) + Math.Pow(Ay - By, 2));

            a = Math.Round(a, 3);
            b = Math.Round(b, 3);
            c = Math.Round(c, 3);

            Console.WriteLine("\n-------------------\nLängen: \na= " + a + " cm \nb= " + b + " cm \nc= " + c + " cm\n-------------------\n");

            

            
            double winkelA = Math.Round((180 / Math.PI) * Math.Acos((Math.Pow(b, 2) + Math.Pow(c, 2) - Math.Pow(a, 2)) / (2 * b * c)), 3);
            double winkelB = Math.Round((180 / Math.PI) * Math.Acos((Math.Pow(a, 2) + Math.Pow(c, 2) - Math.Pow(b, 2)) / (2 * a * c)), 3);
            double winkelC = 180 - winkelA - winkelB;

            Console.WriteLine("\n-------------------\nWinkel: \nAplpha= " + winkelA + " Grad \nBeta= " +winkelB +" Grad \nGamma= "+winkelC+ " Grad\n-------------------\n");


            double u = a + b + c;

            double fläche = Math.Round((Math.Sqrt(u / 2 * (u / 2 - a) * (u / 2 - b) * (u / 2 - c))), 3);
            Console.WriteLine("\n-------------------\nUmfang=  " + u + " cm\nFläche= " + fläche+ " cm*2\n-------------------");


           
            Console.Read();





        }
    }
}


1x
vote_ok
von suppengruen (200 Punkte) - 14.05.2019 um 14:18 Uhr
Quellcode ausblenden C#-Code
using System;

namespace DreieckCalc
{
    /*
    Gegeben sind alle Koordinaten.Die Punkte A und B gibt der Benutzer ein und die C Koordinate ist der Koordinaten Ursprung (0, 0).
    Anhand der Seiten soll der Flächeninhalt und alle Winkel berechnet werden.
    */
    class Program
    {
        static Double[] a = new Double[2];
        static Double[] b = new Double[2];
        static Double[] c = { 0, 0 };
        static Double sA, sB, sC, fi, alpha, beta, gamma;
                
        static void Main(string[] args)
        {
            Eingeben();
            Rechnen();
            Ausgeben();
        }

        static void Eingeben()
        {            
            int kompos;
            string koordhelp;

            //A
            Console.WriteLine("Gib die Koordianten von A ein!\nFormat: x,y");
            koordhelp = Console.ReadLine();
            kompos = koordhelp.IndexOf(',');
            if(kompos == -1)
            {
                Console.Clear();
                Console.WriteLine("Komma konnte nicht gefunden werden!");
                return;
            }
            a[0] = Convert.ToDouble(koordhelp.Substring(0, kompos));
            a[1] = Convert.ToDouble(koordhelp.Substring(kompos + 1));

            //B
            Console.WriteLine("Gib die Koordianten von B ein!\nFormat: x,y");
            koordhelp = Console.ReadLine();
            kompos = koordhelp.IndexOf(',');
            if (kompos == -1)
            {
                Console.Clear();
                Console.WriteLine("Komma konnte nicht gefunden werden!");
                return;
            }
            b[0] = Convert.ToDouble(koordhelp.Substring(0, kompos));
            b[1] = Convert.ToDouble(koordhelp.Substring(kompos + 1));
        }

        static void Rechnen()
        {            
            //Seite b
            sB = Math.Sqrt((Math.Pow(a[0],2) + Math.Pow(a[1],2)));
            //Seite a
            sA = Math.Sqrt((Math.Pow(b[0], 2) + Math.Pow(b[1], 2)));
            //Seite c
            double helpc1;
            double helpc2;
            helpc1 = a[0] - b[0];
            helpc2 = a[1] - b[1];
            if(helpc1 < 0 )
            {
                helpc1 = helpc1 * (-1);
            }
            if (helpc2 < 0)
            {
                helpc2 = helpc2 * (-1);
            }
            sC = Math.Sqrt(Math.Pow(helpc1, 2) + Math.Pow(helpc2, 2));

            //Flächeninhalt          
            fi = Math.Sqrt((sA + sB + sC)*(sA + sB - sC)*(sB + sC - sA)*(sC + sA - sB)) / 4;
          
            //Winkel
            alpha = Math.Acos((Math.Pow(sB, 2) + Math.Pow(sC, 2) - Math.Pow(sA, 2)) / (2 * sB * sC));
            beta = Math.Acos((Math.Pow(sA, 2) + Math.Pow(sC, 2) - Math.Pow(sB, 2)) / (2 * sA * sC));
            gamma = Math.Acos((Math.Pow(sA, 2) + Math.Pow(sB, 2) - Math.Pow(sC, 2)) / (2 * sA * sB));
            alpha = RadUmrechner(alpha);
            beta = RadUmrechner(beta);
            gamma = RadUmrechner(gamma);
        }

        static double RadUmrechner(double rad)
        {
            double deg = 0.0;

            deg = 180 / Math.PI * rad;

            return deg;
        }

        static void Ausgeben()
        {
            Console.Clear();
            Console.WriteLine("Das Ergebnis ist...");
            Console.WriteLine("Flächeninhalt: {0}cm²\nAlpha: {1}°\nBeta: {2}°\nGamma:{3}°",fi,alpha,beta,gamma);
            Console.ReadLine();
        }        
    }
}
vote_ok
von Gisbert5020 (3120 Punkte) - 05.06.2019 um 17:24 Uhr
Quellcode ausblenden C#-Code
using System;

namespace Dreieck_Console
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Koordinate Ax eingeben:");
            Double Ax = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Koordinate Ay eingeben:");
            Double Ay = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Koordinate Bx eingeben:");
            Double Bx = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Koordinate By eingeben:");
            Double By = Convert.ToDouble(Console.ReadLine());
            Double a = Math.Sqrt(Math.Pow(Bx - Ax, 2) + Math.Pow(Ay - By, 2));
            Console.WriteLine("Länge a = " + a);
            Double b = Math.Sqrt(Math.Pow(Ax, 2) + Math.Pow(Ay, 2));
            Console.WriteLine("Länge b = " + b);
            Double c = Math.Sqrt(Math.Pow(Bx, 2) + Math.Pow(By, 2));
            Console.WriteLine("Länge c = " + c);
            Double cosa = (Math.Pow(b, 2) + Math.Pow(c, 2) - Math.Pow(a, 2))/(2*b*c);
            Console.WriteLine("Winkel alpha = " + 180*Math.Acos(cosa)/Math.PI);
            Double cosb = (Math.Pow(a, 2) + Math.Pow(c, 2) - Math.Pow(b, 2)) / (2 * a * c);
            Console.WriteLine("Winkel Beta = " + 180 * Math.Acos(cosb) / Math.PI);
            Double cosc = (Math.Pow(a, 2) + Math.Pow(b, 2) - Math.Pow(c, 2)) / (2 * a * b);
            Console.WriteLine("Winkel Gamma = " + 180 * Math.Acos(cosc) / Math.PI);
            Double U = a + b + c;
            Double s = U / 2;
            Double F = Math.Sqrt(s*(s-a)*(s-b)*(s-c));
            Console.WriteLine("Fläche = " + F);
            Console.ReadLine();
        }
    }
}

vote_ok
von bebbe80 (300 Punkte) - 22.06.2019 um 19:39 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Trainb
{
    class Program
    {
        public static double Seitenlaenge(double x1, double y1, double x2, double y2)
        {
           double seite =  Math.Sqrt(Math.Pow((x1 - x2), 2) + Math.Pow((y1 - y2), 2));
            return seite;
        }
        public static double Winkel(double hypothenuse, double kathetea, double katheteb)
        {
            double winkel = Math.Acos((Math.Pow(hypothenuse, 2) - Math.Pow(kathetea, 2) - Math.Pow(katheteb, 2)) / (-2 * kathetea * katheteb)) * 180 / Math.PI;
            return winkel;
        }
        public static double Flaeche(double a, double b, double c)
        {
            double s = (a + b + c) / 2.0;
            double flaeche = Math.Sqrt(s * (s - a) * (s - b) * (s - c));
            return flaeche;
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Geben sie die erste x-Koordinate ein");
            double x1 = double.Parse(Console.ReadLine());
            Console.WriteLine("Geben sie die erste y-Koordinate ein");
            double y1 = double.Parse(Console.ReadLine());
            Console.WriteLine("Geben sie die zweite x-Koordinate ein");
            double x2 = double.Parse(Console.ReadLine());
            Console.WriteLine("Geben sie die zweite y-Koordinate ein");
            double y2 = double.Parse(Console.ReadLine());

            Console.WriteLine("Seite a = " + Seitenlaenge(x1, y1, 0, 0) + " cm");
            Console.WriteLine("Seite b = " + Seitenlaenge(x2, y2, 0, 0) + " cm");
            Console.WriteLine("Seite c = " + Seitenlaenge(x1, y1, x2, y2) + " cm");
            Console.WriteLine("Winkel alpha = " + Winkel(Seitenlaenge(x1, y1, 0 ,0), Seitenlaenge(x2, y2, 0, 0),Seitenlaenge(x1, y1, x2, y2)) + " Grad");
            Console.WriteLine("Winkel alpha = " + Winkel(Seitenlaenge(x2, y2, 0, 0), Seitenlaenge(x1, y1, 0, 0), Seitenlaenge(x1, y1, x2, y2)) + " Grad");
            Console.WriteLine("Winkel alpha = " + Winkel(Seitenlaenge(x1, y1, x2, y2), Seitenlaenge(x2, y2, 0, 0), Seitenlaenge(x1, y1, 0, 0)) + " Grad");
            Console.WriteLine("Die Fläche beträgt " + Flaeche(Seitenlaenge(x1, y1, 0, 0), Seitenlaenge(x2, y2, 0, 0), Seitenlaenge(x1, x2, y1, y2)) + " cm^2");
            Console.ReadLine();
        }
    }
}
vote_ok
von luckyman81 (550 Punkte) - 16.04.2020 um 22:28 Uhr
Quellcode ausblenden C#-Code
using System;

namespace CS_Aufgabe_261_Dreiecksberechnung
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("xA eingeben: ");
            double xA = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("yA eingeben: ");
            double yA = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("xB eingeben: ");
            double xB = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("yB eingeben: ");
            double yB = Convert.ToDouble(Console.ReadLine());

            Triangle tri = new Triangle(xA, yA, xB, yB, 0.0, 0.0);
            var sides = tri.CalculateSidesFromCoordinates();
            Console.WriteLine($"Seitenlaengen a={sides.Item1:0.0000}, b={sides.Item2:0.0000}, c={sides.Item3:0.0000}");

            var angles = tri.CalculateAnglesFromCosineRule();
            Console.WriteLine($"Winkel alp={angles.Item1 * 180.0 / Math.PI:0.0000}, bet={angles.Item2 * 180.0 / Math.PI:0.0000}, gam={angles.Item3 * 180.0 / Math.PI:0.0000}");

            Console.WriteLine($"Winkelsumme: {(angles.Item1+ angles.Item2 + angles.Item3) *180.0 / Math.PI}");


            Console.WriteLine($"Flaeche A={tri.CalculateArea():0.0000}");
        }
    }
    
    internal class Triangle
    {
        public double XA { get; private set; }
        public double YA { get; private set; }
        public double XB { get; private set; }
        public double YB { get; private set; }
        public double XC { get; private set; }
        public double YC { get; private set; }
        public int Sides { get; private set; }

        public Triangle(double xA, double yA, double xB, double yB, double xC, double yC)
        {
            XA = xA;
            YA = yA;
            XB = xB;
            YB = yB;
            XC = xC;
            YC = yC;
        }

        public (double,double,double) CalculateSidesFromCoordinates()
        {
            
            double sideA = Math.Sqrt(Math.Pow(YC - YB, 2.0) + Math.Pow(XC - XB, 2.0));
            double sideB = Math.Sqrt(Math.Pow(YC - YA, 2.0) + Math.Pow(XC - XA, 2.0));
            double sideC = Math.Sqrt(Math.Pow(YB - YA, 2.0) + Math.Pow(XB - XA, 2.0));

            return (sideA, sideB, sideC);
         }

        public (double, double, double) CalculateAnglesFromCosineRule() {
            
            var sides = CalculateSidesFromCoordinates();

            double alpha = Math.Acos((
                Math.Pow(sides.Item2, 2.0) + Math.Pow(sides.Item3, 2.0) - Math.Pow(sides.Item1, 2.0)) / (2.0 * sides.Item2 * sides.Item3));
            double beta = Math.Acos((
                Math.Pow(sides.Item1, 2.0) + Math.Pow(sides.Item3, 2.0) - Math.Pow(sides.Item2, 2.0)) / (2.0 * sides.Item1 * sides.Item3));
            double gamma = Math.Acos((
                Math.Pow(sides.Item1, 2.0) + Math.Pow(sides.Item2, 2.0) - Math.Pow(sides.Item3, 2.0)) / (2.0 * sides.Item1 * sides.Item2));

            return (alpha, beta, gamma);
        }

        public double CalculateArea() 
        {
            // ~Wikipedia/Trapezformel
            return 0.5 * (XA * (YB - YC) + XB * (YC - YA) + XC * (YA - YB));

        }
    }
}