PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mathematisches Problem


Date Murphy
22.09.2002, 15:28
Hi @ all,

ich möchte ein Programm schreiben, in welchem man 3 Seitenlängen eines Dreicks eingibt und das Programm dann ermittelt, um was für ein Dreieck es sich handelt (Gleichseitiges Dreieck, Gleichschenkliges Dreieck oder ein Rechwinkliges Dreieck). Hat jemand einen Tipp für für mich, wie man das am besten errechnen kann, um was für ein Dreieck es sich handelt ?Danke schon mal.

Gruß Date Murphy :D


smpx7
22.09.2002, 16:13
Na das ist ja easy ;)

- alle Winkel ausrechnen

- Wenn a = b = c -> Gleichseitiges Dreieck

- Wenn alpha, beta od. gamma = 90° -> rechtwinkliges

Und bei dem
Gleichschenkligem fällt mir grad net ein wie das aussah

Hoffe das ist was Du wolltest!
Wäre schön wenn Du Deine code-Lösung hier hereinstellen könntest.

erfolgreiche Grüsse,
smpx7

xOOn
23.09.2002, 08:38
gleichschenklig ist ein dreieck wenn 2 winkel/seiten gleich gross sind.

das einzige beim rechtwinkelingen muss du mit sin/cos/tan die winkel ausrechnen

Felix Kaiser
23.09.2002, 14:41
Und da bitte beachten, dass die Delphifunktionen für sin/cos/tan nur mit Bogenmaßen rechnen und nicht mit Grad. Musste vorher noch umrechnen.

xOOn
23.09.2002, 14:52
wenn mich nicht alles taeuscht

bogenmass = grad * pi / 180;
grad = bogenmass * 180 / pi

Date Murphy
23.09.2002, 15:21
@ xOOn

Kannst du mir mal bitte mit dem ausrechnen von

den Winkeln beim Rechtwinkligen Dreieck helfen ?


Gruß Date Murphy :D

xOOn
23.09.2002, 15:32
also auswendig weiss ich es nichtmehr aber das findest du enmass im internet wie der sinus und co laeuft

du musst einfach die winkel ausrechen und schauen ob einer 90 **auf der tastatur gradzeichen hab ** grad ist

winkel x = sin (gegenkathete/hypothenuse) * 180 / pi;

fabian ackle
23.09.2002, 15:33
um zu schauen ob es sich um ein rechtwinkliges dreieck handelt musst du die winkel gar nicht kennen, du kannst es auch so lösen:

if (a^2+b^2)^0.5=c then rechtwinklig
if (a^2+c^2)^0.5=b then rechtwinklig
if (c^2+b^2)^0.5=a then rechtwinklig
else nicht rechtwinklig :)

mfg

fabian

xOOn
23.09.2002, 15:47
@fabian ackle

jepp aber mit den scheiss floats die nicht immer soo genau rechnen beweifle ich ob da immer genau das richtige rauskommt

12 <> 11.99999999

bei 3,4,5 stimmts sicher aber bei komplexeren muesste man das testen

Felix Kaiser
23.09.2002, 15:50
Oder auf die letzte Stelle runden, das geht auch ganz einfach: Vergleiche nicht float mit float, mach aus beiden Float mit FloatToStr nen String und vergleiche die :)

xOOn
23.09.2002, 15:55
muesste man probieren aber ich glaube durch das potenzieren und wurzel machen fehlt mehr als nur eine stelle

you must make some tests:D :D

Felix Kaiser
23.09.2002, 17:28
Durchs Runden wirds dann aber wieder akzeptabel, da die Abweichungen in einem durch Runden wegfallenden Bereich liegen.

0.1 = 1/10 -> false
FloatToStr(0.1) = FloatToStr(1/10) -> true

Ist halt der FPU Algo.

Date Murphy
23.09.2002, 19:55
Danke Euch, werde es mal testen :)

Gruß Date Murphy :D