Возвести число в отрицательную степень - Turbo Pascal (29959)
Формулировка задачи:
Условие:Дано действительное положительное число a и целоe число n.
Вычислите an. Решение оформите в виде функции power(a, n).
Стандартной функцией возведения в степерь пользоваться нельзя.
Вот сам код,но почему то иногда дает неправильный ответ,хотя все первые тесты проходят.Не могли бы вы подсказать,где ошибка?
Листинг программы
- function step(z : real; n : integer) : real;
- var i : integer;
- t : real;
- begin
- if n = 0 then step := 1 else
- begin
- t := 1;
- for i := 1 to abs(n) do
- t := t * z;
- if n >= 0 then step := t else step := 1 / t
- end;
- end;
- var n:integer;
- z:real;
- begin
- readln(z,n);
- writeln(step(z,n));
- end.
Решение задачи: «Возвести число в отрицательную степень»
textual
Листинг программы
- function Pow(a: Real; n: Integer): Real;
- var r: Real;
- begin
- if a=0 then begin
- Pow:=0; Exit;
- end;
- if n<0 then begin
- Pow:=1/Pow(a,-n); Exit;
- end;
- r:=1;
- while n>0 do begin
- if Odd(n) then r:=r*a;
- n:=n div 2; a:=a*a;
- end;
- Pow:=r;
- end;
Объяснение кода листинга программы
- Функция
Pow
принимает два аргумента:a
(которое возводится в отрицательную степень) иn
(степень, в которую нужно возвестиa
). - Если
a
равно нулю, то функция возвращает ноль. - Если
n
меньше нуля, то функция возвращает обратное значениеPow(a,-n)
. - Создается переменная
r
и присваивается ей значение единицы. - Создается цикл
while
, который выполняется до тех пор, покаn
больше нуля. - В каждой итерации цикла проверяется, является ли
n
нечетным числом. Если это так, то значениеr
умножается наa
. n
делим на два, аa
возводим в квадрат.- После завершения цикла значение
r
становится результатом функцииPow
. - Функция возвращает значение
r
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д