Java Dreiecksberechnung?
Hallo, wir sind drei bois und brauchen eure Hilfe. Hat jmd zufällig eine Ahnung wie man in Java folgendes Problem bearbeiten könnte:
Die Aufgabe besteht darin, ein Fenster zu öffnen, in dem Sechs Felder zum Eintragen verschiedener Werte vorhanden sind (Drei Felder für die Winkel, drei für die Seiten). Das Programm soll dann - nach Eingabe von drei Werten - ausgeben, wie groß die restlichen drei sind. Oder, wenn sich aus den gegebenen Werten kein Dreieck errechnen lässt, eine Fehlermeldung ausgeben.
Vielen Dank im Vorraus :)
3 Antworten
Ich geh mal davon aus, dass das Mathematische geklärt ist (Sinus- und Kosinussatz). Auch, ob es sich um Dreiecke einer euklidischen oder nichteuklidischen (elliptischen oder hyperbolischen) Ebene handelt.
Ich bin zwar nicht ganz "orthodox", was "wenn zwei Zeilen Code gleich sind, ist eine von ihnen überflüssig", aber tendiere doch dorthin. Von daher würde ich wohl Seiten und Winkel so umsortieren, dass man jeden Fall auf einen der Fälle (SSS, SSW, SWS, SWW, WSW, WWW (nur im elliptischen und hyperbolischen Fall)) zurückführt, und bei der Erzeugung des Dreiecks wieder zurücksortiert.
3 Felder von 6 ausgefüllt - das sind (6 über 3) = 20 verschiedene Fälle.
Oder ihr nehmt alle 2^6 = 64 Fälle und habt ein zusätzliches Label, das ggf. hinweist auf "Das Dreieck ist unterbestimmt", "Das Dreieck ist überbestimmt", "Es existiert kein solches Dreieck" etc.
-----
(Übrigens, ich frage mich, wie vielen es noch so geht, dass sie "bois" zumindest im ersten Moment als ein französisches Wort verstehen.)
Das geht ganz einfach. Ich müsst euch die Kombinationen überlegen, die immer notwendig sind bzw mit denen man alles ausrechnen kann (zB sin() oder Pythagoras). Ihr schreibt also eine Methode die alle nötigen Zahlen entgegennimmt und die leeren ausrechnet. dabei habt ihr einen Vorteil: keine der Werte im Dreieck dürfen 0 oder negativ sein (also Winkel oder Kante) sonst bekomnt ihr kein Dreieck. Das heißt, ihr könnt die Werte die euch fehlen als 0 übergeben. Wenn die Methode genug Werte hat um den Rest zu berechnen, füllt ihr die eingegangenen Pointer und liefert True zurück.
Soviel zur Theorie xD Wenn ihr fragen habt meldet euch per PN.
Okay, hier hast du zumindest schonmal das Fenster mit allem drum und dran: https://pastebin.com/4SJdxt3M
Beachte noch die Kommentare von Zeile 67-73.