Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Возведение в степень на С++

23K
14 февраля 2007 года
}N-R-J{
3 / / 10.02.2007
Ребятки помогите пожалуста,нигде нимогу найти как возвести в степень на С++.Например 5 в степени 2,пожалуста помогите надо писать лабы а без этого никак :( .
За раннее благодорю!:)
1.9K
14 февраля 2007 года
InterWen
331 / / 16.09.2006
стандартная ф-я (math.h) pow(5,2);

или реализуем собственными силами (для int):


 
Код:
int pow(int val, unsigned int P)
    {
    int r = val;
    for (unsigned int i=0; i<P; i++)
        {
        r = r*val;
        }
    return r;
    }
9
14 февраля 2007 года
Lerkin
3.0K / / 25.03.2003
Чего-то я затупил совсем. А разве этот код правильный? В плане количества итераций?
А так?
 
Код:
int pow(int val, unsigned int P)
{
    int r = val;
    while (--P)
        r *= val;
    return r;
}
1.9K
14 февраля 2007 года
InterWen
331 / / 16.09.2006
Извиняюсь, на одну итерацию переборщил, т.е. пересасывая первый пример правильнее было бы например i<(P-1);
[COLOR="Gray"]Добавлено: нет, снова сорри, минус к беззнаковому типу... а ведь мог быть ноль, как-то не совсем "этично".[/COLOR]
что-то меня плющит сегодня целый день, пчхи..чий грипп наверное :)


Цитата:
А так?



+1, Все в норме.

[COLOR="Gray"]Не считая моих личных проблем с головой, хронически не люблю записей вида while(--P), когда-то пытался знакомому обьяснить, инкремент, постинкремент и.т.д. видимо так намучался, что сам зарекся писать малоняглядные новичку инструкции циклов... хотя в данном случае вопрос наглядности очень спорный, да и на обьявлении лишней переменной-счетчика сэкономили ;) +1[/COLOR]

303
14 февраля 2007 года
makbeth
1.0K / / 25.11.2004
Ну раз стандартная pow не подходит, то можно не заморачиваться с циклами. Есть давно уже проверенная формула ;) :
 
Код:
result = exp(power * ln(base));

где power - степень, base - основание.
8.8K
14 февраля 2007 года
The_Ice
109 / / 04.04.2006
ну а если степень двойки, то смещение влево :)
 
Код:
result = base << stepen_dvoiki;
309
14 февраля 2007 года
el scorpio
1.1K / / 19.09.2006
Модифицируем приложенное целочисленное решение
 
Код:
int pow (int val, unsigned int P)
{
    int r = 1; // Для степени = 0 результат будет 1
    if (val != 0) // Если основание = 0, то цикл не выполняется
       for (; P-- > 0;)
          r *= val;
    else r = 0;
    return r;
}

Правда остаётся открытым вопрос касательно переполнения :(
24K
17 февраля 2007 года
Artempmpu
7 / / 04.02.2007
Простите за запоздалый комментарий.
Можно и рекурсивно
 
Код:
int pow (int ar, unsigned int p)
{
if(!p) return 1;
else return ar*pow(ar,p-1);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог