Охх ничего с утра опнять не могу. Почему вылетает программа при X = 0 ?
{$mode objfpc}
uses Math, Crt;
var
x: Double = 0;
c: array [0..4] of Double = (-1, -1, 0, 2, 1);
function F: Double;
var
i: Integer;
begin
result := 0;
for i := Length( c ) - 1 downto 0 do
result := result + Power(x, i) * c[i];
end;
begin
clrscr;
writeln(F:2:2);
readln;
end.
В общем ошибка при Power(0, ...)
Чтож придется делать проверку перед возведением.
Все ясно, спасибо.
Как же тогда допускается такое ?!
uses crt, math;
begin
clrscr;
writeln(Power(-2, 2):2:1); // выводится 4
writeln(Power(-2, 3):2:1); // выводится -8
readln;
end.
Посмотри на реализацию Power (файл math.pp):
function power(base,exponent : float) : float;
begin
if Exponent=0.0 then
if base <> 0.0 then
result:=1.0
else
InvalidArgument
else if (base=0.0) and (exponent>0.0) then
result:=0.0
else if (abs(exponent)<=maxint) and (frac(exponent)=0.0) then
result:=intpower(base,trunc(exponent))
else if base>0.0 then
result:=exp(exponent * ln (base))
else
InvalidArgument;
end;
writeln(Power(-2, 2.5) : 2 : 1);