Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Возведение числа в степень

Страницы: 1
Возведение числа в степень
Подскажите, как описать функцию, чтобы возвести Х в степень. проблема в том ,что степень может быть любым вещественным числом.
Попробуйте поискать соотв. библиотеку типа GNU для Pascal. Хотя, можно вроде как-то обойтись и квадратом, я лично на PHP так и делал - мне нужно было брать корень произвольной степени, и я использовал функцию bcsqrt из PHP. Правда, получается не быстро, мягко говоря
Accende lumen sensibus, infude ainorem corbidus!
На делфи так вроде
В модуле Math есть функция
function Power(const Base, Exponent: Extended): Extended;
которая возводит любое число в любую степень.

Код
E := StrToFloatDef(Edit.Text, 1); // Если число введено неверно, то вернет 1
X := Power(Число, E);
Изменено: kenny - 24.03.2010 00:11:50
свободный страннык
А вот кстати на pascal вот так, с виду код рабочий, но я не проверял нашел просто чтоб помочь, так что пробуйте
Код
Uses crt;
Var chisl, stepen:Real;
    Function stn(Var chislo, stepen:Real) of Real;
     Var per:real;
     Begin 
      Per:= Abs(chislo);
      If chislo < 0 Then Pow:= (-1)*Exp((stepen)*Ln(per))
       Else Pow:= Exp((stepen)*Ln(per));
     end;
Begin
clrscr;
Write('Введите число = '); readln(chisl);
Write('Введите степень = '); readln(stepen);
Writeln('Возведя в степень получаем = ',stn);
readln;
readln;
End.
Изменено: kenny - 14.03.2010 00:52:22
свободный страннык
Kenny, код рабочий, но из-за свойств логарифма он работает не для всех значений.
Алексей Смирнов
В данном коде не хватает только проверки степени на 0, только в этом случае функция будет работать не верно, так как логарифм нуля не существует.

Нужно просто добавить проверку

Код
function stn(var number, step:real): real; 
begin
   if (step<>0) then begin 
       stn:= exp((step)*ln(abs(number)))*number/abs(number); 
   end else stn:=1; 
end;
Дмитрий Зеньков, это вроде бы даже формула математическая...

А вообще, если бы степень была целочисленная, то можно было бы сделать рекурсивный алгоритм) так сказать, выпендриться
Рекурсивные алгоритмы лучше не использовать, так как вызовы функций складываются в стек и во-первых стек может не выдержать, а во-вторых скорость выполнения такой программы ниже чем нерекурсивной.
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)