Obliczanie wartości trygonometrycznych w Pascalu

0

Hej.
Pisałem tutaj kilka dni temu i uzyskałem szybką pomoc więc teraz postanowiłem napisać znowu. Otóż przerabiam sobie zadania w Pascalu i jedno zadanie brzmi:

Utwórz aplikację konsolową, która oblicza dla podanej w stopniach wartości kąta x wartość wyrażenia:
sin^2(x) + cos^2(x)

Wydaje się nie najgorsze, ale mam problem z zapisaniem wyrażenia, bo zrobiłem je na 3 sposoby i każde podaje mi inny wynik, chociaż wszystkie wydają mi się poprawne.

program Project1;

uses
  Classes, SysUtils, CustApp;

var
  x, stopnie:real;

begin
  Write('Podaj kat ');
  Read(stopnie);
  x:=stopnie*pi/180; // tutaj zamiana stopni na radiany
  WriteLn('Wartosc kata ', round(stopnie), ' dla wyrazen ');
  WriteLn('1. sin^2(x) + cos^2(x) = ');
  WriteLn('#1: ', sqr(sin(x))+sqr(cos(x)):4:4);
  WriteLn('#2: ', sqr(sin(x)+sqr(cos(x))):4:4);
  WriteLn('#3: ', (sin(x)*sin(x))+(cos(x)*cos(x)):4:4);
  ReadLn();
  ReadLn();
end.           

Po wywołaniu programu otrzymuję wynik (dla 20 stopni)

Podaj kat 20
Wartosc kata 20 dla wyrazen
1. sin^2(x) + cos^2(x) =
#1: 1.0000
#2: 1.5007
#3: 1.0000
1

Do konwersji pomiędzy stopniami a radianami są gotowe funkcje – RadToDeg i DegToRad – więc nie musisz ręcznie tego obliczać. No dobrze, ale w czym jest problem?

0
furious programming napisał(a):

Do konwersji pomiędzy stopniami a radianami są gotowe funkcje – RadToDeg i DegToRad – więc nie musisz ręcznie tego obliczać. No dobrze, ale w czym jest problem?

Widzisz, nie wiedziałem o tych funkcjach.

Problem w tym, bo nie wiem, który z tych trzech zapisów jest poprawny

0

Poprawne są zapisy #1 i #3.
Gdy ja chodziłem do szkoły, to dla każdego x zachodziła równość sin^2(x) + cos^2(x) = 1. Teraz jest inaczej? Jeżeli zadanie ma pokazać, żę komputer liczy niedokładnie, to musisz wypisywać znacznie więcej cyfr po separatorze dziesiętnym.

0

W przypadku #2 masz źle nawiasy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0