Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2009, 12:44   #1
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
Печаль Забыл африфметическую операцию для возведения в N'ую степень

Я знаю мне должно быть стыдно, но я забыл африфметическую операцию для возведения в N'ую степень. Просто её непомню. Напомните, заранее спс.

P.S.
не надо говорить, что это можно сделать циклом. Мне нужна именно она.
pro100-delphi вне форума Ответить с цитированием
Старый 21.08.2009, 13:11   #2
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Код:
Function Pow(A,B:extended):extended;
Var T:extended;
Begin
     T := Abs(A);
     If A < 0 Then Pow := (-1)*Exp(B*Ln(T))
              Else Pow := Exp(B*Ln(T));
End;
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 21.08.2009, 13:12   #3
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

В модуле math находится называется power(это в Delphi) в паскале такой функции нет, я всегда считал используя свойство натурального логарифма.
Код:
Pow := Exp(step*Ln(abs(chislo)));
exp() = значит экспонента в степени. Только необходимо доработать с учетом четности нечетности степени для отрицательных чисел.

Или вот нашел полный вариант на просторах интернета:
Код:
function power(Base, Exponent: Extended): Extended; 
var ex: extended; 
begin 
  power := 0; 
  if (exponent <> 0) 
    and (frac(trunc((1 / exponent) * 1000000) / 1000000) = 0) 
    and (base < 0) then 
    begin 
      if round(1 / exponent) mod 2 = 0 then exit; 
      ex := Exp(Exponent * Ln(-Base)); 
      power := -ex; 
    end 
  else 
    begin 
      if Exponent = 0.0 then 
        power := 1.0 
      else if (Base = 0.0) and (Exponent > 0.0) then 
        power := 0.0 
      else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then 
        power := IntPower(Base, Integer(Trunc(Exponent))) 
      else 
        power := Exp(Exponent * Ln(Base)) 
    end; 
end;
Страх это слабость и потому, кто испугался уже побежден.

Последний раз редактировалось Mixasik; 21.08.2009 в 13:18.
Mixasik вне форума Ответить с цитированием
Старый 21.08.2009, 15:31   #4
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
По умолчанию

Mixasik, Pow := Exp(step*Ln(abs(chislo))); - это то, что мне нужно. Спасибо. Просто учитель по информатике, когда то это давал, а я забыл))
pro100-delphi вне форума Ответить с цитированием
Старый 21.08.2009, 15:32   #5
pro100-delphi
Пользователь
 
Аватар для pro100-delphi
 
Регистрация: 19.08.2009
Сообщений: 99
По умолчанию

спасибо всё помогли
pro100-delphi вне форума Ответить с цитированием
Старый 21.08.2009, 16:18   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Pow := Exp(step*Ln(abs(chislo)));
Вам написал Stepler правильно, Вы все равно по своему. Сколько будет по вашей формуле (-3)^3 ? Правильно 27. А на самом деле -27.

Последний раз редактировалось puporev; 21.08.2009 в 19:22.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
забыл пароль, что делать? Screame Microsoft Office Excel 2 10.08.2009 15:45
Проблема при входе в Windows XP-забыл пароль ))(( Петрович Безопасность, Шифрование 10 07.07.2009 08:13
Забыл как сделать запрет на ввод с клавы diznt Помощь студентам 5 20.08.2008 23:26
Вопроск конечно детский, но забыл Speeker БД в Delphi 3 04.01.2007 00:03