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.
klem4
19.10.2006 12:49
В общем ошибка при Power(0, ...)
Чтож придется делать проверку перед возведением.
volvo
19.10.2006 13:04
Цитата(rtl.pdf)
17.12.53 power Synopsis: Return real power. Declaration: function power(base: float;exponent: float) : float Visibility: default Description: power raises base to the power power. This is equivalent to exp(power*ln(base)).
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;
(InvalidArgument как раз и бросает Exception)... Видишь, что произойдет, если дробная часть экспоненты ненулевая? Исключение выброшено не будет... А попробуй
writeln(Power(-2, 2.5) : 2 : 1);
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.