Pochodna romberga - problem.

0

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.
0

Far? Na czym i w czym Ty programujesz? PS: Sformatuj kod, bo jest nieczytelny.

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