Возведение int в степень

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
Доброе утро, вечер, ночь, день, запад
Недавно тут узнал, что оператор ^ не возводит в степень
26^0 = 26 оказывается

Как в питоне ** не работает
26**0 = Compilator error

С float есть функция Pow
Таки как возводить в степерь int?
 

Tomiks

Участник
Сообщения
419
Реакции
288
Можно функцию сделать, в которую отправлять степень(для цикла нужно) и само число, после в ней циклом for возводить соответственно уже
--- Добавлено позже ---
Только нужно дописать условие, что если степень = 0 && число != 0, то return 1
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
Только нужно дописать условие, что если степень = 0 && число != 0, то return 1
Спасибо, в итоге цикл и сделал
и условие не обязательно:
PHP:
stock int IntPow(int i, int l)
{
    int o = 1
    for(int p = 0;p<l;p++)    o*=i
    return o
}
при l = 0 возвращает 1
(Там нету нулей, там везде буква о, кроме int p = 0)
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #4
Я надеюсь, изобретение велосипеда - это шутка.

У Павна для возведения чисел в степень, как и в Сях, существует функция Pow(). На вход принимает флоаты самого числа и степени, в ответ возвращает тоже float.
upload_2019-6-22_0-6-36.png

C++:
#include <sourcemod>
#include <float>

const float flValue = 3.0;
const float flExponent = 4.0;

public void OnPluginStart()
{
    PrintToServer("Pow(%f, %f) == %f", flValue, flExponent, Pow(flValue, flExponent));
}

И да, с нулевой степенью оно тоже умеет нормально работать:
upload_2019-6-22_0-7-37.png

Всё как в математике.

Конвертировать float в int труда не составит, надеюсь.
 

selax

Добрая душа
Сообщения
1,172
Реакции
521
Последнее редактирование:
Сверху Снизу