Wątek przeniesiony 2015-05-20 20:52 z Delphi i Pascal przez furious programming.

Zamyka okienko w Dev-Pascalu

0

Witajcie! Napisałem sobie taki kod poniżej. Niestety, przy wpisywaniu wartości x oraz epsilon, okienko się zamyka.
Ktoś ma pomysł jak to naprawić? Proszę o pomoc.

program seweryn;

var x: real ;
var W: real ;
var s: real ;
var epsilon: real ;
var q: real ;
var k: longint ;
begin
write('podaj x') ;
readln(x) ;
write('podaj epsilon') ;
readln (epsilon) ;
k:=0 ;
W:=1 ;
S:=1 ;
q:=1/(sqr(1+x)) ;
repeat
W:=W*x*(-1)*(k+1)/k ;
S:=S+W ;
k:=k+1 ;
until Abs(W)<epsilon ;
writeln ('wartosc przyblizona funkcji wynosi:') ;
writeln (S) ;
writeln ('dokladnie wartosc funkcji wynosi:') ;
writeln (q) ;
writeln ('ilosc uwzglednionych wyrazow wynosi:') ;
writeln (k) ;
read (x) ;
end.

dodanie znacznika <code class="pascal"> - @furious programming

0

dodaj readln; na końcu to będzie czekał na entera.

0

Niestety dalej zamyka.

0

Bo k masz na początku = 0, a tylko COBOL potrafi dzielić przez 0. LOL

0

Działa! :) Ale czekaj... W zadaniu mam epsilon, na górze epsilona nieskończoność a na dole k=0
Wpisałem k=1 w kodzie i dla dowolnych wartości z przedziału |x|<1 wyskakują różne wyniki, czyli dobrze wychodzi.
Pytanie co z tym epsilonem...

0

Jak już zadajesz pytanie bardziej merytoryczne to może podaj co ten program ma robić.
Chodzi coś z obszaru Taylora?

0

Tak wygląda zadanie + algorytm.
Pytanie - co z tym k=0 ?
Czy to warunek konieczny, żeby k równało się 0?

user image

0
  1. Policz pierwszy wyraz poza pętlą, dzięki czemu nie będziesz musiał robić IF w pętli (czyli po to żeby uniknąć "if (k > 0)" przy wyliczeniu W).
  2. warunek pętli powinien użyć q, S i epsilon (jeśli warunek na dokładność) lub tak jak jest (warunek na zbieżność).

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