Повышение целого числа до X степени

В ответ на это приглашение:

Написать функцию integerPower( base, exponent ) который возвращает значение базового показателя. Например, integerPower( 3, 4 ) == 3 * 3 * 3 * 3, Предположим, что exponent является положительным ненулевым целым числом и base является целым числом Функция integerPower следует использовать for или же while контролировать расчет. Не используйте математические библиотечные функции.

Я написал эту программу:

#include <iostream>
#include <conio.h>
using namespace std;

int integer (int a, int b) {
int e;

for (int i = 1; i <= b; i++)
e *= a;

return (e);
}

int main () {
cout << "enter number and exponent";
cin >> num >> exp;
cout << num << "to the power" << exp << "is" <<;
int num, exp, n;
integer (num, exp, n);
getch ();
return 0;
}

По какой-то причине функция integer (int a, int b) возвращает 0 независимо от того, что значения a а также b являются. Зачем?

-1

Решение

Вы должны инициализировать е в 1.

int e = 1;

Кроме того, вы не объявляете тип num а также exp в правильном месте.

int main () {
cout << "enter number and exponent";
int num, exp;
cin >> num >> exp;
cout << num << "to the power" << exp << "is" << integer (num, exp); // remove the third parameter
getch ();
return 0;
}
3

Другие решения

Внутри функции integer, инициализировать e как это :

int e = 1;

Кроме того, двигаться int num, exp, n; перед cin заявление.

0

Как вы можете прочитать в других ответах, вы должны объявить переменные num и exp в основной функции и инициализировать e в 1 в целочисленном значении функции. Но вам не нужно использовать пространство имен std, вы просто добавляете std :: к ссылке на его члены, например std :: cin, std :: cout, и ваш код будет еще более понятным. Ура!

0

Прежде всего непонятно, почему показатель степени, равный 0, был исключен как приемлемое значение. Я бы написал функцию следующим образом

int integerPower( int base, unsigned int exponent )
{
int result = 1;

while ( exponent-- != 0 ) result *= base;

return ( result );
}
0
По вопросам рекламы [email protected]