Witam.
mam problem z programem, który ma obliczyć całkę 2 sposobami. Koniecznie muszę używać procedur.
Czy mógłby mi ktoś powiedzieć co jest źle i jak to naprawić jestem naprawdę słaby w tym. Coś takiego udało mi się wyskrobać
program calka;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a,b:real48;
N:integer;
//funkcje
function FNC(x:real48):real48;
begin
FNC:=x*sqr(x)*sqr(sqr(x));
end;
//procedury
procedure prostokat( var xi, S_P, S_NP:real48);
var
H,B,A,Q1:real48;
i,k:integer;
begin
for k:=1 to 10 do begin
N:=N*2;
H:=(B-A)/N;
S_P:=0;
S_NP:=0;
for i:=1 to N-1 do begin
xi:=a+i*H;
if odd(i) then
S_NP:=S_NP+FNC(xi)
else
S_P:=S_P+FNC(xi);end;
Q1:=(FNC(a)+S_NP+S_P)*H;
end;
end;
procedure parabol( var xi, S_P, S_NP:real48);
var
H,B,A,Q2:real48;
i,k:integer;
begin
for k:=1 to 10 do begin
N:=N*2;
H:=(B-A)/N;
S_P:=0;
S_NP:=0;
for i:=1 to N-1 do begin
xi:=a+i*H;
if odd(i) then
S_NP:=S_NP+FNC(xi)
else
S_P:=S_P+FNC(xi);end;
Q2:=(FNC(a)+FNC(b)+4*S_NP+2*S_P)*H/3;end;
//blok glowny programu
begin
writeln('Calkowanie numeryczne');
writeln('Metoda prostokatow i parabol');
writeln; writeln('podaj a=');readln(A);
writeln; writeln('podaj b=');readln(B);
writeln; writeln('podaj N=');readln(N);
prostokat(Q1);
parabol(Q2);
readln;
end;
end.
dodanie znacznika <code class="delphi"> - fp