Mam do napisania program, który liczy całkę oznaczoną numerycznie metodą prostokątów. Otóź napisałem program, ale nie czyta a i b(n czyta), dane wejściowe się nie wczytują.
program AiSD;
procedure CzytajDane( var n:integer; a,b: real);
// procedura wczytuje zmienne n, a, i b
begin
write( 'Podaj liczbe przedzialow n: ' ); readln( n );
writeln;
write( 'Podaj poczatek przedzialu a: ' ); readln( a );
writeln;
write( 'Podaj koniec przedzialu b: ' ); readln( b );
writeln;
end;
function Funkcja(var x:real) : real;
begin
Funkcja := x*x;
end;
function LiczCalkeProstokatami (n:integer; a, b: real):real;
//funkcja oblicza calke i zwraca wynik
var dx, xi, p, D, x: real;
var i: integer;
begin
dx := 0;
xi := 0;
D := 0;
i:=1;
x:=0; // argument funkcji kwadratowej
dx:=(b-a)/n;
while xi<=b do
begin
xi:=a+dx*i;
x:=a+dx*(i-1)+dx/2;
p:=dx*Funkcja(x);
D:=D+p;
i:=i+1;
writeln('n=', n, 'a=',a:4:3, 'b=', b:4:3, 'dx=', dx:5:4,' xi=',xi:5:4,' x=',x:5:4,' p=',p:4:3,' D=',D:4:3,' i=',i)
end;
LiczCalkeProstokatami := D;
end;
procedure PiszWyniki(var D:real);
begin
writeln('D: ', D);
end;
procedure CalkaProstokatna;
var n: integer;
a,b, calka : real;
begin
CzytajDane(n,a,b);
calka := LiczCalkeProstokatami(n,a,b);
PiszWyniki(calka);
end;
begin
CalkaProstokatna;
readln;
end.
W załączniku co wyświetla się dla n=5 i przedziałów a=1 i b=2