Berechnung verläuft falsch, warum ?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
FokS
Beiträge: 2
Registriert: Di 16. Sep 2014, 20:51

Berechnung verläuft falsch, warum ?

Beitrag von FokS »

hey ho

ich bin ziemlich neu in der programmier welt und ich habe einen auftrag bekommen verschiedene werte eines kreisauschnitts zu berechnen.
gegeben seien dürfen immer nur 2 werte.

soweit sogut, die formeln habe ich, sowie das UI.
kommen wir zum problem, ein wert (die sekante/Kreissehne) wird falsch aus gerechnet

Formel:
s:= 2*r*sin(a/2);
Falls ich beispielsweise für den radius 5 eingebe und für den winkel 35, ergibt das bei meinem programm -9,756
falls ich das aber manuell, bzw mit meinem taschenrechner ausrechne bekomme ich 3,007, und da vertraue ich meinem taschenrechner.
kann mir einer verraten wieso das so ist ? und viel wichtiger: wie ich das beheben kann?

der wert für a wird auch falsch berechnet, nur da weiß ich nicht ob es aus dem resultierendem flaschen ergebnis von s kommt
Formel:
a:= 2*arcsin(s/(2*r));

hier ein auschnitt:

Code: Alles auswählen

if (Parameter1.Text = 'Schenkel') and (Parameter2.Text = 'Winkel') then
     begin
          r:= StrToFloat(Input1.Text);
          a:= StrToFloat(Input2.Text);
          Ain:= Pi*sqr(r)/360*a;
          b:= r*Pi*a/180;
          s:= (2*r)*(sin(a/2));
           end;
so zieht sich das durch den kompletten code. er fragt mit if befehlen solange ab, bis er die richtige kombination findet.
bitte nich lachen, ich habs nich schlauer hinbekommen die einzelnen werte auszulesen und zu verarbeiten

dann am ende die ausgabe :

Code: Alles auswählen

ABogen.Text:= FloatToStr(b);
ASchenkel.Text:= FloatToStr(r);
AInhalt.Text:= FloatToStr(Ain);
ASekante.Text:= FloatToStr(s);
AWinkel.Text:= FloatToStr(a);
mfg

foks

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Berechnung verläuft falsch, warum ?

Beitrag von Michl »

Die Funktionen Sin, Cos... rechnen nicht mit Gradmaß sondern Bogenmaß (bei einem Tachenrechner kann man das ebenfalls einstellen). Du müsstest daher zuvor den Winkel in Bogenmaß umrechnen, dann sollte es funktionieren (BogenmaßWinkel := GradWinkel * Pi / 180).

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

FokS
Beiträge: 2
Registriert: Di 16. Sep 2014, 20:51

Re: Berechnung verläuft falsch, warum ?

Beitrag von FokS »

oh danke schön für die schnelle antwort.

Solche fehler kommen dann, wenn man noch nie trigonometrie in seinem leben hatte xD

mfg

Antworten