diff --git a/uebungen/u14/Winkel.class b/uebungen/u14/Winkel.class new file mode 100644 index 0000000..5a31577 Binary files /dev/null and b/uebungen/u14/Winkel.class differ diff --git a/uebungen/u14/Winkel.java b/uebungen/u14/Winkel.java index 5baacf7..4c7ab79 100644 --- a/uebungen/u14/Winkel.java +++ b/uebungen/u14/Winkel.java @@ -3,7 +3,41 @@ import java.util.Scanner; * Klasse zum Berechnen von Winkeln eines Dreiecks */ public class Winkel { + + public static Scanner console = new Scanner(System.in); + public static void main(String[] args) { System.out.println("Dieses Programm errechnet die drei Winkel eines Dreiecks."); + + double sideA = getSideInput("a"); + double sideB = getSideInput("b"); + double sideC = getSideInput("c"); + + System.out.println("alpha = " + determineAngle(sideA, sideB, sideC)); + System.out.println("beta = " + determineAngle(sideB, sideC, sideA)); + System.out.println("gamma = " + determineAngle(sideC, sideA, sideB)); + } + /** + * Druckt die Eingabeaufforderung fuer eine bestimmte Seite und gibt naechsten + * eingegebenen Double zurueck + */ + public static double getSideInput(String sidename) { + System.out.print("Bitte Seitenlänge " + sidename + " eingeben: "); + return console.nextDouble(); + } + + /** + * Nutzt den Kosinussatz um aus drei Seitenlaengen den Winkel alpha zwischen b und c zu errechnen + * Rueckgabewert ist in Gradmass und mit round1 auf eine Nachkommastelle gerundet + */ + public static double determineAngle(double a, double b, double c) { + return round1(Math.acos((b * b + c * c - a * a)/(2 * b * c)) / Math.PI * 180); + } + + /** Rundet eine gegebene Zahl auf eine Nachkommastelle. */ + public static double round1(double value) { + if (Double.isNaN(value)) return value; + if (Double.isInfinite(value)) return value; + return Math.round(value * 10) / 10.0; } }