Возвести число в отрицательную степень - Turbo Pascal (29959)

Узнай цену своей работы

Формулировка задачи:

Условие:Дано действительное положительное число a и целоe число n. Вычислите an. Решение оформите в виде функции power(a, n). Стандартной функцией возведения в степерь пользоваться нельзя. Вот сам код,но почему то иногда дает неправильный ответ,хотя все первые тесты проходят.Не могли бы вы подсказать,где ошибка?
Листинг программы
  1. function step(z : real; n : integer) : real;
  2. var i : integer;
  3. t : real;
  4. begin
  5. if n = 0 then step := 1 else
  6. begin
  7. t := 1;
  8. for i := 1 to abs(n) do
  9. t := t * z;
  10. if n >= 0 then step := t else step := 1 / t
  11. end;
  12. end;
  13. var n:integer;
  14. z:real;
  15. begin
  16. readln(z,n);
  17. writeln(step(z,n));
  18. end.

Решение задачи: «Возвести число в отрицательную степень»

textual
Листинг программы
  1. function Pow(a: Real; n: Integer): Real;
  2. var r: Real;
  3. begin
  4.   if a=0 then begin
  5.     Pow:=0; Exit;
  6.   end;
  7.   if n<0 then begin
  8.     Pow:=1/Pow(a,-n); Exit;
  9.   end;
  10.   r:=1;
  11.   while n>0 do begin
  12.     if Odd(n) then r:=r*a;
  13.     n:=n div 2; a:=a*a;
  14.   end;
  15.   Pow:=r;
  16. end;

Объяснение кода листинга программы

  1. Функция Pow принимает два аргумента: a (которое возводится в отрицательную степень) и n (степень, в которую нужно возвести a).
  2. Если a равно нулю, то функция возвращает ноль.
  3. Если n меньше нуля, то функция возвращает обратное значение Pow(a,-n).
  4. Создается переменная r и присваивается ей значение единицы.
  5. Создается цикл while, который выполняется до тех пор, пока n больше нуля.
  6. В каждой итерации цикла проверяется, является ли n нечетным числом. Если это так, то значение r умножается на a.
  7. n делим на два, а a возводим в квадрат.
  8. После завершения цикла значение r становится результатом функции Pow.
  9. Функция возвращает значение r.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы