Przepisanie programu z Pascal do Octave

0

Witam, muszę przepisać program obliczający wartości wielomianu algorytmem Neville'a i mam mały problem. A mianowicie po przepisaniu go do Octave dostaję błąd:

syntax error

endfunction
^

Próbuje dojść od dłuższego czasu co ja dokładnie zrobiłem źle, lecz nie widzę.

Pascal

type    vector = array [ 1..100] of Extended;

function Neville (n      : Integer;
                  x      : vector;
                  xx     : Extended;
                  var f  : vector;
                  var st : Integer) : Extended;
var i,k : Integer;
begin
  if n<0
    then st:=1
    else begin
           st:=0;
           if n>0
             then begin
                    i:=-1;
                    repeat
                      i:=i+1;
                      for k:=i+1 to n do
                        if x[i]=x[k]
                          then st:=2
                    until (i=n-1) or (st=2)
                  end;
           if st=0
             then begin
                    for k:=1 to n do
                      for i:=n downto k do
                        f[i]:=((xx-x[i-k])*f[i]-(xx-x[i])*f[i-1])
                              /(x[i]-x[i-k]);
                    Neville:=f[n]
                  end;
         end;
end;


var n,st:Integer;
var x,f  :vector;
xx,wynik :Extended;
BEGIN
n:=5;
x[0]:=1;x[1]:=2;x[2]:=3;x[3]:=4;x[4]:=5;x[5]:=6;
xx:=2.5;
f[0]:=1; f[1]:=4; f[2]:=9; f[3]:=16; f[4]:=25; f[5]:=36;

wynik:=Neville(n,x,xx,f,st);
 writeln(wynik,' ',st);
 readln();
END.

Octave:

function wynik=neville(n,x,xx,f,st)

if n<0
st=1; endif

if n>0;
i=-1; endif
do
i=i+1;
for k=i+1:n
if x(i)==x(k)
st=2; endif endfor
while(i==n-1) || (st==2) endwhile

if st==0
for k=1:n
for i=n:-1:k
f(i)=((xx-x(i-k))*f(i)-(xx-x(i))*f(i-1))/(x(i)-x(i-k));
endfor
wynik=f(n);
endfor

endif
st
endfunction

0

Jest: while(i==n-1) || (st==2) endwhile
Powinno być: until(i==n-1) || (st==2)

  • na pierwszy rzut okiem "do () until ()" powinno być środku ifa n>0
if n>0;
    i=-1;
% brakujący kod
 endif

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