Seite 1 von 1

Programm zur Berechnung von Seiten und Winkeln eines 3-Ecks

Verfasst: Mittwoch 17. Januar 2007, 18:04
von ClemeX
Also wie gesagt, das Programm ist dazu da um Seiten & Winkel eines Rechtwinkligen Dreiecks zu berechnen.
Es ist mein allererstes Programm, und ich weiß nicht was daran nicht stimmt, nur dass z.B. etwas bei der Winkelberechnung nicht funktioniert.
Bitte einerseits um Hilfe & Ratschläge und andererseits um Meinungen:

Hier der Link:
http://paste.pocoo.org/show/688/

By Clemens R. 7D

Re: Programm zur Berechnung von Seiten und Winkeln eines 3-E

Verfasst: Mittwoch 17. Januar 2007, 18:26
von BlackJack
ClemeX hat geschrieben:Es ist mein allererstes Programm, und ich weiß nicht was daran nicht stimmt, nur dass z.B. etwas bei der Winkelberechnung nicht funktioniert.
Das ist etwas ungenau. Was genau funktioniert denn nicht? Bekommst Du Fehlermeldungen? Falsche Ergebnisse? Wenn Du falsche Ergebnisse bekommst, gib doch mal ein Beispiel was Du eingibst, was Du als Ergebnis erwartest und was Du stattdessen bekommst.

Re: Programm zur Berechnung von Seiten und Winkeln eines 3-E

Verfasst: Mittwoch 17. Januar 2007, 19:13
von ClemeX
BlackJack hat geschrieben:
ClemeX hat geschrieben:Es ist mein allererstes Programm, und ich weiß nicht was daran nicht stimmt, nur dass z.B. etwas bei der Winkelberechnung nicht funktioniert.
Das ist etwas ungenau. Was genau funktioniert denn nicht? Bekommst Du Fehlermeldungen? Falsche Ergebnisse? Wenn Du falsche Ergebnisse bekommst, gib doch mal ein Beispiel was Du eingibst, was Du als Ergebnis erwartest und was Du stattdessen bekommst.
Ok das Hauptproblem ist, dass ich bei den Ergbenissen (ALLEN), manchmal 0 rauskriege (obwohl es gar nicht rauskommen kann).
Wenn ich aber "schöne" Zahlen verwende, z.B. a = 3; b =4
dann rechnet er richtig 5 raus.

Re: Programm zur Berechnung von Seiten und Winkeln eines 3-E

Verfasst: Mittwoch 17. Januar 2007, 20:00
von da3dalus
ClemeX hat geschrieben: Ok das Hauptproblem ist, dass ich bei den Ergbenissen (ALLEN), manchmal 0 rauskriege (obwohl es gar nicht rauskommen kann).
Ich würde mal spekulieren, dass er bei den Divisionen einfach mit int rechnet, weshalb er auf 0 kommt. Ersetz doch probeweise mal z.B. "Laenge_a = input('Die Laenge von Kathete a, bitte: ')" durch "Laenge_a = float(input('Die Laenge von Kathete a, bitte: ')" usw.

Re: Programm zur Berechnung von Seiten und Winkeln eines 3-E

Verfasst: Mittwoch 17. Januar 2007, 21:44
von ClemeX
da3dalus hat geschrieben:
ClemeX hat geschrieben: Ok das Hauptproblem ist, dass ich bei den Ergbenissen (ALLEN), manchmal 0 rauskriege (obwohl es gar nicht rauskommen kann).
Ich würde mal spekulieren, dass er bei den Divisionen einfach mit int rechnet, weshalb er auf 0 kommt. Ersetz doch probeweise mal z.B. "Laenge_a = input('Die Laenge von Kathete a, bitte: ')" durch "Laenge_a = float(input('Die Laenge von Kathete a, bitte: ')" usw.
habs probiert funktioniert baer auch ned :(
Hab mal geschaut was Python schreibt, und bin draufgekommen, dass ihm hier etwas nicht passt:
ergebnis_Laenge_a = math.sqrt(Laenge_c ** 2 - Laenge_b ** 2)*1.0

Verfasst: Mittwoch 17. Januar 2007, 22:02
von da3dalus
Passiert das auch, wenn du für c und b irgendwelche Kommazahlen (3.5 oder sowas) einsetzt?

Verfasst: Mittwoch 17. Januar 2007, 22:35
von ClemeX
da3dalus hat geschrieben:Passiert das auch, wenn du für c und b irgendwelche Kommazahlen (3.5 oder sowas) einsetzt?
Nein, wenn ich z.B 3.0 eingebe auch nicht! In dem Fall funktioniert das Programm bei der Seitenberechnung, aber bei den Winkel funkts dann noch immer ned, weil er einen falschen arc sinus ausrechnet. Es kommen ergebnisse wie 0.345° raus, das kann ja keine Winkel sein.

Verfasst: Mittwoch 17. Januar 2007, 22:46
von da3dalus
In dem Fall solltest du vielleicht mal die degrees(x)-Funktion aus dem math-Modul auf deine Winkel anwenden und gucken, ob die Werte dann Sinn ergeben :wink:

Verfasst: Mittwoch 17. Januar 2007, 22:54
von birkenfeld
ClemeX hat geschrieben:
da3dalus hat geschrieben:Passiert das auch, wenn du für c und b irgendwelche Kommazahlen (3.5 oder sowas) einsetzt?
Nein, wenn ich z.B 3.0 eingebe auch nicht! In dem Fall funktioniert das Programm bei der Seitenberechnung, aber bei den Winkel funkts dann noch immer ned, weil er einen falschen arc sinus ausrechnet. Es kommen ergebnisse wie 0.345° raus, das kann ja keine Winkel sein.
Doch, das kann schon ein Winkel sein ^^

Im Ernst: die trigonometrischen Funktionen im math-Modul arbeiten alle mit "richtigen Winkeln", also Bogenmaß (360° = 2π).
D.h. du musst Gradangaben (wie da3dalus sagte) für sin(), cos() etc. ins Bogenmaß (engl. "radians") umrechnen und Ergebnisse von asin(), acos() etc. vom Bogenmaß in Grad.

Verfasst: Donnerstag 18. Januar 2007, 14:32
von Leonidas
Und dazu bietet das math-Modul degrees() und radians() an.

Verfasst: Donnerstag 18. Januar 2007, 20:26
von ClemeX
ich weiß, dass man das wahrscheinlich nicht tun sollte, aber nun gehts:
hab mir bei einem anderen programm angeschaut, wie er /sie das gelöst hat :( , und hab bemerkt, dass ich dass schreiben muss:
*180/math.pi

Jetzt funkts auf jeden Fall, nur würde ich gerne noch wissen, was dieser Befehl bewirkt.:oops:

Hier die "wohl" Endfassung:
http://paste.pocoo.org/show/702/

Verfasst: Donnerstag 18. Januar 2007, 20:31
von Leonidas
ClemeX hat geschrieben:Jetzt funkts auf jeden Fall, nur würde ich gerne noch wissen, was dieser Befehl bewirkt.:oops:
Na, irgendwie muss man doch Bogenmaß-Werte auf Gradmaß-Werte umrechnen, besonders wenn man die entsprechenden Funktionen des math-Moduls nicht kennt.

Verfasst: Freitag 19. Januar 2007, 21:30
von birkenfeld
ClemeX hat geschrieben: Hier die "wohl" Endfassung:
http://paste.pocoo.org/show/702/
Du hast immer noch nicht den Fehler bei der Division beseitigt.

Code: Alles auswählen

        Laenge_x  = (Laenge_a / Laenge_c)
liefert dir einen Integer, wenn a und c Integers sind. Zum Beispiel ist

Code: Alles auswählen

>>> 1/2
0
Du musst also zumindest einen der Werte in einen float umwandeln, vor du teilst.

Verfasst: Samstag 20. Januar 2007, 13:30
von ClemeX
birkenfeld hat geschrieben: Du musst also zumindest einen der Werte in einen float umwandeln, vor du teilst.
Wird gemacht :D
Danke für den Tipp!