Zravim, trvorim program pro vypocet urciteho integralu x^2. Do programu vstupuji meze integrace, pocet podintervalu na ktere se ma zadany interval rozdelit (N) a presnost. Pokud zadam presnost 0,00001, cyklus, ktery upravuje pocet podintervalu (N:=2*N) spadne a vyhodi mi to hlasku exited with exitcode = 201. Slysel jsem neco o preteceni aritmetiky, neni mozne, ze N se timto cyklem prehoupne pres urcitou hranici? Testovanim jsem dosel k zaveru, ze program pada pokud je vysledne N = 32768 a vyssi. Dekuji za pomoc
Program integrace;
uses crt;
var a,b,delkaintervalu,h,yhorni,ydolni,sumahorni,sumadolni,integral,chyba,P:real;
i,N,c:integer;
procedure numint(N:integer);
begin
delkaintervalu:=b-a;
h:=delkaintervalu/N;
sumahorni:=0;
sumadolni:=0;
for i:=1 to N do begin
yhorni:=(a+h*i)*(a+h*i);
sumahorni:=sumahorni+h*yhorni;
end;
for i:=0 to N-1 do begin
ydolni:=(a+h*i)*(a+h*i);
sumadolni:=sumadolni+h*ydolni;
end;
integral:=(sumahorni+sumadolni)/2;
chyba:=abs(sumahorni-sumadolni);
end;
begin
ClrScr;
write('Integrace od: ');readln (a);
write('Integrace do: ');readln (b);
write('Pocet podintervalu: ');readln (N);
write('Pozadovana presnost: ');readln (P);
numint(N);
if
chyba>P
then
begin
write('Prilis velka chyba, zvysuji pocet podintervalu.');
readln();
repeat
N:=N*2;
numint(N);
until chyba<P;
write('Numericka hodnota integralu: ');writeln(integral:7:5);
write('Chyba vypoctu integralu: '); writeln(chyba:7:5);
end
else
begin
write('Numericka hodnota integralu: ');writeln(integral:7:5);
write('Chyba vypoctu integralu: '); writeln(chyba:7:5);
end;
readln();
end.