Страница 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 раз"".