Witam.
Mam problem z wyświetleniem wartości obliczonej pochodnej. Cały czas jest równa ona 0.00000...E+000 a nie powinna .
Czy kto wie jak temu zaradzić. Nie programuje na co dzień. Jest mi to potrzebne na zaliczenie kursy.
Dziękuję za pomoc.
program pochodna;
uses crt;
function f(x : real): real; far;
var z : real;
begin
f:=sin(z)+cos(z);
end;
function Rombergdiff (x : real;
var h0 : real;
m : integer;
eps : real;
var st : integer) : real;
var i,j,n : integer;
h,q,s,tj,tj1 : real;
t: Array[0..6] Of real;
begin
st:=1;
if m>=1
then begin
n:=1;
repeat
h:=h0;
q:=f(x+h);
s:=f(x-h);
t[0]:=(q-s)/(2*h);
i:=1;
repeat
h:=h/2;
q:=f(x+h);
s:=f(x-h);
t[i]:=(q-s)/(2*h);
q:=1;
j:=i-1;
repeat
q:=4*q;
tj:=t[j];
tj1:=t[j+1];
s:=tj1+(tj1-tj)/(q-1);
if (j=0) and (abs(s-t[0])<eps)
then st:=0
else t[j]:=s;
j:=j-1
until (st=0) or (j=-1);
i:=i+1
until (st=0) or (i=7);
n:=n+1;
h0:=h0/2
until (st=0) or (n>m);
if n>m
then st:=2
end;
case st of
0,2 : Rombergdiff:=s;
1 : Rombergdiff:=0
end;
end;
var w,a,m,st:integer;
rom, x,h0,eps:real;
begin
clrscr;
w:=2;
repeat {PoczĄtek p©tli "wiecznej"}
clrscr;
writeln('###########################################');
writeln('# #');
writeln('# MENU #');
writeln('# #');
writeln('# 1. Informacje o autorach #');
writeln('# 2. Informacje o programie #');
writeln('# 3. Obliczenie pochodnej #');
writeln('# 0. Wyjscie #');
Writeln('# #');
writeln('# #');
writeln('###########################################');
writeln;
write('Wybierz pozycj© z menu: ');
readln(a);
case a of {Menu wyboru}
1:begin
clrscr;
writeln('Informacje o autorach :');
writeln;
writeln;
writeln;
writeln;
writeln;
writeln;
writeln;
write('Wcinij ENTER a wr˘cisz do menu ');
readln();
end;
2:begin
writeln('Wybrales 2');
writeln;
writeln;
writeln;
writeln;
write('Wcinij ENTER a wr˘cisz do menu ');
readln();
end;
3: begin
clrscr;
writeln;
write('Podaj wartosc x0 ');
readln(x);
writeln;
write('Podaj wartosc h0 ');
readln(h0);
writeln;
write('Podaj wartosc m ');
readln(m);
writeln;
write('Podaj wartosc eps ');
readln(eps);
clrscr;
rom:= Rombergdiff(x,h0,m,eps,st);
writeln('Pochodna funkcji :',rom );
writeln('st :', st);
writeln;
writeln;
writeln;
write('Wcinij ENTER a wr˘cisz do menu ');
readln();
end;
0: begin {WYJ—CIE z programu + dodatkowe pytanie }
writeln('Czy jeste pewien ,ľe chcesz zakoäczy† ? 1-TAK , 2-NIE');
readln(w);
case w of
1: w:=1;
2: w:=2;
else begin
writeln('Nie ma takiego wyboru');
readln();
end; {KONIEC BEGIN w CASE 0}
end; {KONIEC CASE w}
end; {KONIEC CASE a OF 0}
else
begin
writeln('Wybranego numeru nie ma w menu');
readln();
end;
end; {Koniec funkcji CASE OF}
until w=1; {Koniec funkcji REPEAT}
end.