Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.86
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
#1

Функция для возведения в степень (стыдно) - C++

20.05.2011, 02:31. Просмотров 6374. Ответов 5
Метки нет (Все метки)

Здравствуйте. Нужно написать программу, которая читает два целых значения (основание и показатель степени) и выдаёт результат, используя функцию.
Задача простая, но у меня на выходе (вне зависимости от введенной степени) почему-то всегда получается число в квадрате.

Вот как делал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
 
#include <conio.h>
 
 
 
int integerPower (int base, int exponent);
 
int main()
{
    int main_base;
    int main_exponent;
    
    cout << "Enter a base, please: ";
    cin >> main_base;
    
    cout << "Enter an exponent, please: ";
    cin >> main_exponent;
    
    cout << "\nResult is: " << integerPower (main_base, main_exponent);
    
    getch();
    return 0;
}
 
int integerPower (int base, int exponent)
{
    int x;
    
    for (int count = 1; count <= exponent; count++)
    {
        x = base * base;
    }
    
    return x;
}
Что здесь не так?
Стыдно(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2011, 02:31     Функция для возведения в степень (стыдно)
Посмотрите здесь:

Функция возведения в степень - C++
Добрый день. Ребята, помогите решить проблему. Написал функцию для вычисления действительных корней кубического уравнения. возникает...

Функция возведения в степень. - C++
написал библиотеку для вычисления степени чисел.некорректно работает при возвращении переменной из step.h в main.cpp и переводе в другую. ...

Рекурсивная функция возведения в степень - C++
Мое задание: Вычислить y = x^n(икс в степени n) по следующему правилу: y = ( x^n/2 )^2, если n четное и y = x * y^(n–1), если n...

Рекурсивная функция возведения в степень - C++
Ребята, написал функцию для возведения в степень из учебника, но она почему-то не хочет работать. Вот код: int pow(int base, unsigned...

не подключаеться функция возведениЯ в степень pow - C++
#include &lt;math.h&gt; L=sqrt(pow(x-x0)+pow(y-y0)); Почему не подключаеться функция возведениЯ в степень pow, кто...

Программа для возведения числа в степень - C++
Здравствуйте. Преподаватель остался недовольным, из-за того, что я это реализовал через готовый оператор, а надо через цикл(а как это...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
20.05.2011, 02:41     Функция для возведения в степень (стыдно) #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cmath>
 
template < typename T >
double Degree (T num, T deg)
{
    return (exp(deg * log(num)));
}
 
int main ()
{
    std::cout << Degree(2, 3) << std::endl;
    std::cin.get();
    return 0;
}
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
20.05.2011, 02:43  [ТС]     Функция для возведения в степень (стыдно) #3
Извините, забыл сказать, нельзя пользоваться математическими функциями.
Надо действовать в лоб, вроде как у меня в коде.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
20.05.2011, 02:47     Функция для возведения в степень (стыдно) #4
Цитата Сообщение от vortexx1 Посмотреть сообщение
x = base * base;
заменить на
C++
1
x *= base;
Добавлено через 3 минуты
и инициализируйте
C++
1
int x = 1;
иначе не правильно...
vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
20.05.2011, 12:27  [ТС]     Функция для возведения в степень (стыдно) #5
Спасибо, заработало!


C++
1
2
3
4
5
6
7
8
9
10
11
int integerPower (int base, int exponent)
{
    int x = 1;
    
    for (int count = 1; count <= exponent; count++)
    {
            x *= base;
    }
    
    return x;
}
А х = 1 это да, сам заметил, иначе оно левые числа выдавало.

Добавлено через 9 часов 39 минут
Народ, а как сделать то же самое, только при помощи рекурсии?
Спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2011, 12:30     Функция для возведения в степень (стыдно)
Еще ссылки по теме:

Алгоритм для быстрого возведения в степень - C++
Всем привет, помогите написать алгоритм для возведения в степень дак чтоб для возведения в 15 степень требуется 6 операций умножения, а для...

Какой тип данных нужен для возведения в степень - C++
Добрый день. При возведении числа в степень столкнулся с проблемой, что при возведении числа 9 в 8 степень (как пример) выдает абракадабру...

Производный класс: метод возведения в произвольную степень, и метод для вычисления логарифма числа - C++
Реализовать класс-оболочку Number для числового типа float. Реализовать методы сложения и деления. Создать производный класс Real, в...

Возведения в степень - C++
Народ нужна помощь так как только, сегодня утром начал учить С++ сразу же возникли вопросы Например у меня есть последовательность чисел...

программа возведения в степень - C++
Друзья, я &quot;начинающий&quot; в СИ и поэтому столкнулся с такой проблемой: мой компилятор &quot;Miracle C&quot; Неправильно выполняет код, взятый из...

Класс возведения в степень - C++
Добрый день всем. Тут зашел в тупик. Класс с функцией-членом возведения числа в степень путем перемножения друг на друга (я хочу добавить и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
20.05.2011, 12:30     Функция для возведения в степень (стыдно) #6
vortexx1,
C++
1
2
3
4
5
6
7
8
9
10
int integerPowerHelper(int base, int exponent, int result)
{
     if(exponent < 1)
        return result;
     return integerPowerHelper(base, --exponent, result*base);
}
int integerPower(int base, int exponent)
{
    return integerPowerHelper(base, exponent, 1);   
}
или
C++
1
2
3
4
5
6
int integerPower(int base, int exponent)
{
    if(exponent <= 1)
      return base;
    return  base * intergerPower(base, --exponent);
}
Yandex
Объявления
20.05.2011, 12:30     Функция для возведения в степень (стыдно)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru