Member NFOC Ответов: 2

Можем ли мы сделать число, возведенное в степень, числовой вещью, просто используя 2 переменные и цикл for с переменной для выполнения итерации?


Код, который только и только содержит эти вещи:
Содержит переменную для базы данных
Содержит переменную для экспоненты
Использует цикл for для выполнения степенной функции(здесь мы можем использовать переменную для итерации)
Выводит результат в окно консоли

Что я уже пробовал:

Я пробовал это много раз, но не смог сделать этого, используя только две переменные.
Пример того, что я пробовал:
int base;
int exponent;
int c;
c=exponent;
exponent=base;	
for (int i = 1; i < c; i++) {

exponent*= base;
}
std::cout << exponent;

2 Ответов

Рейтинг:
1

Jochen Arndt

Пусть петля идет вниз. А потом ... exponent значение может быть присвоено переменной цикла изначально. Потому что Вы тоже должны инициализировать результат и будете использовать exponent, это должно быть сделано после инициализации переменной цикла. К Счастью, C/C++ for циклы допускают несколько операторов в выражении init.

Собрав все это вместе и инициализировав результат одним, чтобы получить правильный результат, когда exponent равен нулю (требуется на одну итерацию больше, чем в вашем коде):

for (int i = exponent - 1, exponent = 1; i >= 0; i--)
{
    exponent *= base;
}


CPallini

Ницца. 5.

Member NFOC

Спасибо, что помогло. Кроме того, я нашел еще один подобный код, как ваш, сделав некоторые корректировки, как это:
int a;
int b;
с std::соиь <&ЛТ; "давайте найдем силы в:" &ЛТ;&ЛТ; функция std::епси;
std::cout << "введите b: ";
std::cin >> b;
std::cout << "введите a: ";
std::cin >> a;

для (int i = b-1 , b = 1; i >= 0; i--) {

/и std::соиь <&ЛТ; "б:" &ЛТ;&ЛТ; б &ЛТ;&ЛТ; функция std::епси;
b *= a;
/и std::соиь <&ЛТ; "я:" &ЛТ;&ЛТ; я &Л;&Л; функция std::епси;
если (i == 0) {
с std::соиь <&ЛТ; "б:" &ЛТ;&ЛТ; б &ЛТ;&ЛТ; функция std::епси;
}

}

Jochen Arndt

Это идентично, кроме использования разных имен переменных и печати результата внутри цикла. Последнее даже неверно, потому что ничего не будет напечатано, когда показатель степени равен нулю (тогда тело цикла никогда не вводится).

Member NFOC

Сэр, я думаю, что ваш код также не соответствует заранее определенным условиям. Поскольку ваш код принимает более трех переменных(три переменные должны быть такими: две для экспонент и базы и одна для цикла for), взяв b внутри цикла, вы создаете код, подобный этому:
for (int i = 0, result = 1; i < expo; i++ ) {
результат *= база;
}

Nelek

элегантный, приятный :)

Member NFOC

Я думаю, что ваш код также не соответствует заранее определенным условиям. Поскольку ваш код принимает более трех переменных(три переменные должны быть такими: две для экспонент и базы и одна для цикла for), взяв b внутри цикла, вы создаете код, подобный этому:
for (int i = 0, result = 1; i < expo; i++ ) {
результат *= база;
}

Рейтинг:
0

Patrice T

Цитата:
Я пробовал это много раз, но не смог сделать этого, используя только две переменные.

Что мешает вам использовать c или exponent как переменная цикла ?