Страница 1 из 1
непонятно(
Добавлено: 18 сен 2009, 13:46
mdems
непонятно...

Объясните пожалуста зачем нужна переменная p ... поподробней я начал изучать функции непонимаю как это происходит...(
Код: Выделить всё
#include <stdio.h>
int power ( int m, int n);
int main()
{
int i;
for (i = 0; i < 10; ++i)
printf("%d\n", power ( 2,i ));
return 0;
}
int power( int base, int n )
{
int i,p;
p = 1;
for(i = 1; i <= n; ++i)
p = p * base;
return p;
}
Re: непонятно(
Добавлено: 18 сен 2009, 16:09
Romeo
Тяжёлый случай
Переменная p является вспомогательной переменной и используется для перемножения числа base на само себя n раз.
Re: непонятно(
Добавлено: 18 сен 2009, 19:53
_SG
Гы, Ромео, ты чуток неправильно объяснил. Это функция возведения в степень. base в степени n
Re: непонятно(
Добавлено: 18 сен 2009, 21:27
Romeo
Мммм, а что неверно в моих словах? Разве перемножение числа на само себя - это не есть степень числа?

То, что это степень, это и так понятно (хотя бы по названию функции). Я же попытался объяснить сам код, чтобы стала понятна суть происходящего, абстрагируясь от специальных терминов.
Re: непонятно(
Добавлено: 19 сен 2009, 09:55
_SG
Это тебе и мне понятно, а mdems как мне кажется было не понятно.
Re: непонятно(
Добавлено: 21 сен 2009, 09:33
mdems
Парени спасибо вам, очень благодарен что вы есть у меня))

Re: непонятно(
Добавлено: 09 окт 2009, 05:36
atavin-ta
_SG писал(а):Гы, Ромео, ты чуток неправильно объяснил. Это функция возведения в степень. base в степени n
_SG, прочитай определенеи целой степени. Ты просто назвал одним словом то, что Romrro пытался инетрпретировать. Но правильны оба варианта и ещё третий: "переменная p - это мультипликативный счётчик, исспльзуемый для накопления произведения нескольких (n) множителей, в данном случае равных друг другу (и равных base), следовательно результатом будет энная степнь base".
Romeo писал(а):Мммм, а что неверно в моих словах? Разве перемножение числа на само себя - это не есть степень числа?

То, что это степень, это и так понятно (хотя бы по названию функции). Я же попытался объяснить сам код, чтобы стала понятна суть происходящего, абстрагируясь от специальных терминов.
Слово "степень" термин, но не специальный, а общеизвестный. Но так как спросившего интересовало не назначение
всей функции, а её алгоритм и назначие
переменной, то именно твое объяснение лучше, а то, что написал _SG ничего не даёт. А еще лучше так:
"при трансляции этой строки сначала анализируется правый операнд оператора присваивания, и в том месте, где в нём (операнде) исспользвано имя переменной p, этот идентификатор понимается как ссылка на
старое значение p
до присваивания, а потом уже читается, куда (снова в переменную p) надо поместить целиком всё значение правой части (произведение p на base). При исполнении этой строки произведние станет
новым значением перенной p. То есть такая строк аозначает "увеличить p в base раз"".