2015-03-06 5 views
0

Я работаю над функциями HW для моего класса программирования, а Im пытается написать функцию, которая позволит мне делать математику экспоненты (в простой форме). (О, и я не могу использовать фактическую функцию экспоненты, я должен написать свою собственную функцию, используя для циклов, если утверждения или другие подобные вещи.) EX: пользователь вводит базу, а затем вводит ее возможность поднять ее. Таким образом, пользователь вводит: он должен быть от 5 до 3-й степени, поэтому он должен выводить 125 (5x5x5). Однако мой цикл for не работает должным образом. Как я должен структурировать цикл for для правильной обработки показательной математики? код: INT основной() {Как использовать экспоненты с использованием цикла for

int base, pow; 

scanf("%d", &base); 
scanf("%d", &pow); 

int i; 
for (i=0; i<=pow; i++) { 
    i *= base; 
    printf("%d\n", i); 
} 

printf("%d", i); 

ответ

0

Ну вы используете ту же переменную для цикла и результата. Вы не хотите этого делать.

int j = 1; 
for(i = 0; i < pow; i++) 
{ 
     j*= base; 
} 

Это то, что вы хотите. Вы также отключены одним из циклов. С я < = POW у вас есть

я = 0, J * 5 = 5, я = 1

я = 1, J * 5 = 25, я = 2

я = 2, J * 5 = 125, i = 3. Здесь вы хотите остановить, но 3 < = 3, так что он снова идет.

i = 3, j * 5 = 625, i = 4. 4 не < = 3, поэтому он остановится здесь.

0

Петли, очевидно, неправильно:

for (i=0; i<=pow; i++) { 
    i *= base; 
    printf("%d\n", i); 
} 

Вы умножение счетчика цикла на базе по какой-то причине, что не будет давать никакой пользы. Право один будет:

int result = 1; 
for (i=0; i < pow; i++) { 
    result *= base; 
} 
0

Вы хотите аккумулятор, который начинается с 1 и умножают на базе каждый раз. Этот накопитель также не должен быть i (поскольку это изменится на каждом шаге цикла for).

Попробуйте

int base, pow; 

scanf("%d", &base); 
scanf("%d", &pow); 

int i, accumulator; 
accumulator = 1 
for (i=0; i<pow; i++) { 
    accumulator *= base; 
    printf("%d\n", accumulator); 
} 

printf("%d", accumulator); 
+0

У вас есть один дополнительные итерации в цикле. –

+0

Вы правы. Должно быть строгое <. –

Смежные вопросы