Skocz do zawartości

Błąd programu


kuba17f

Polecane posty

Witam.Otóż mam pewien problem z programem.Nie wiem dlaczego np. przy podaniu wartości 4 dla x program poprostu się wylącza i wychodzi z programu a np.dla 1 program dziala poprawnie i wykonuje kolejne instrukcje poprawnie,ale dla niektorych liczb błednie wylicza watosc wyrazenia.

dla 1,2,3 tok działania poprawny, wyniki poprawne

dla 4,5,6 wyłącza program

dla 7,8,9 błędnie oblicza wyrażenie

 

Program Untitled;

var war,f,x:real;

Begin

Writeln('Podaj wartosc argumentu x');

Readln(x);

 

war:=cos(x)/exp(1/3*ln(sin(x)));

 

If war>=0 then writeln('podany argument nalezy do dziedziny')

else writeln('podany argument nie nalezy do dziedziny');

 

f:=cos(x)/exp(1/3*ln(sin(x)));

Writeln('Wartosc funkcji wynosi ',f:2:2);

Readln;

End.

Treść zadania.Program napisałem narazie bez ctg.

http://img577.images...7/2580/fyf9.png

Link do komentarza
Udostępnij na innych stronach

Nie sprawdzałem dokładnie Twojej implementacji wzoru, ale podejrzewam, że podajesz złe argumenty. Do funkcji sin,cos itd. podaje się wartość w radianach, a nie w stopniach. Napisz sobie funkcję DegToRad.

Niestety funkcja DegToRad nie pomogła,chyba że jej źle użyłem mógłbyś napisać coś więcej.

Link do komentarza
Udostępnij na innych stronach

Mogłeś napisać od razu jak jej użyłeś zamiast kazać mi się domyślać.

 

Zamiast cos(x) powinieneś pisać cos(DegToRad(x)), tak samo z sinusem itd.

 

Jeszcze jak pracujesz na liczbach rzeczywistych, to bezpieczniej jest napisać 1.0/3.0 zamiast 1/3 (co dla liczb całkowitych zawsze daje 0 - więc we wzorze zawsze zerujesz wartość logarytmu).

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...