Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2010, 18:40   #1
Marmelade
Пользователь
 
Аватар для Marmelade
 
Регистрация: 29.09.2010
Сообщений: 25
По умолчанию Цикл, возведения числа в N-ную степень

Разбираюсь в циклах, первая задача возведение числа 2 в N-ную степень, написал код. Т.к. не знаю как проверить правильность ответа, прошу Вашей критики, правильно или нет:



{
int i,N,a;
for(i=1;i<=N;i++)a=pow(2,i);
cout<<"res"<<a;
return 0;
}
Marmelade вне форума Ответить с цитированием
Старый 06.10.2010, 18:52   #2
coinkrsk
пыжашийся нуб
Пользователь
 
Регистрация: 19.06.2010
Сообщений: 93
По умолчанию

Я аж прям растерялся.
Цитата:
возведение числа 2 в N-ную степень ... не знаю как проверить правильность ответа...
Вы не знаете как проверить правильно ли программа возводит в N-ю степень???
Похоже на какой то прикол.
coinkrsk вне форума Ответить с цитированием
Старый 06.10.2010, 18:55   #3
Marmelade
Пользователь
 
Аватар для Marmelade
 
Регистрация: 29.09.2010
Сообщений: 25
По умолчанию

Вообще то там цикл...

Я понял, можно N присвоить значение и проверить цикл.... Извините за глупости, только учусь

Последний раз редактировалось Stilet; 07.10.2010 в 11:08.
Marmelade вне форума Ответить с цитированием
Старый 06.10.2010, 19:15   #4
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

Во-первых зачем ты цикл используешь вообще не понятно.. Во-вторых твоя программа вылетит сразу после компиляции(сам догадайся почему). В-третьих функцию pow ты не вызовешь с этими аргументами(в VС++).. Юзай либо просто pow(double long x, int y) без никаких циклов, либо эту функцию :
Код:
int Pow(int num, int n)
{
	int res = num;
	for (int i = 1; i < n; i++)
	{
		res *= num;
	}
	return res;
}
Код:
a = Pow(2,3) // a == 8
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо
fenix-elite вне форума Ответить с цитированием
Старый 06.10.2010, 19:15   #5
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

Можно сдвигами возводить

Код:
for (int i = 1; i < st; i++)
		a <<= 1;
Где a == 2 и st- степень.
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо

Последний раз редактировалось fenix-elite; 06.10.2010 в 19:23.
fenix-elite вне форума Ответить с цитированием
Старый 06.10.2010, 20:56   #6
Marmelade
Пользователь
 
Аватар для Marmelade
 
Регистрация: 29.09.2010
Сообщений: 25
По умолчанию

Цитата:
Сообщение от fenix-elite Посмотреть сообщение
Во-первых зачем ты цикл используешь вообще не понятно.. Во-вторых твоя программа вылетит сразу после компиляции(сам догадайся почему). В-третьих функцию pow ты не вызовешь с этими аргументами(в VС++).. Юзай либо просто pow(double long x, int y) без никаких циклов, либо эту функцию :
Код:
int Pow(int num, int n)
{
	int res = num;
	for (int i = 1; i < n; i++)
	{
		res *= num;
	}
	return res;
}
Код:
a = Pow(2,3) // a == 8

Задание такое... Как ни странно у меня этот код отлично работает (естественно только для целых чисел). Если вы имеете ввиду ту ошибку что я не присвоил значение переменной N, то это можно сделать для проверки цикла... Все работает.... Только что проверил... В чем моя ошибка? Pow работает если подключить соответствующую библиотеку

{
int i,N,a;
for(i=1;i<=N;i++)a=pow(2,i);
cout<<"res"<<a;
return 0;
}
Marmelade вне форума Ответить с цитированием
Старый 07.10.2010, 06:38   #7
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Если изучаешь циклы то и возводить в степень нужно с помощью цикла.
Код:
int i,N,a;
	a=2;//Возводимое в степень число
	cin>>N; // Cтепень возведения

	for(i=1;i<=N-1;i++)
		a*=2;
	cout<<a;

	return 0;
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Старый 07.10.2010, 13:57   #8
Marmelade
Пользователь
 
Аватар для Marmelade
 
Регистрация: 29.09.2010
Сообщений: 25
По умолчанию

Цитата:
Сообщение от atenon Посмотреть сообщение
Если изучаешь циклы то и возводить в степень нужно с помощью цикла.
Код:
int i,N,a;
	a=2;//Возводимое в степень число
	cin>>N; // Cтепень возведения

	for(i=1;i<=N-1;i++)
		a*=2;
	cout<<a;

	return 0;
И какой должен быть ответ в вашем коде, если степень возведения равна 2 (N=2) ???
Получается -171798692 = )))
а должно быть 4

Последний раз редактировалось Marmelade; 07.10.2010 в 14:10.
Marmelade вне форума Ответить с цитированием
Старый 07.10.2010, 15:08   #9
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Неа логика железобетоная 2х2=4 было есть и вроде никто не планировал отменять, цикл выполняется один раз следовательно "а"(то есть 2) умножается на 2 один раз в итоге получается 4. Может быть вы не инициализировали переменную "а"?
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Старый 07.10.2010, 15:15   #10
Marmelade
Пользователь
 
Аватар для Marmelade
 
Регистрация: 29.09.2010
Сообщений: 25
По умолчанию

Цитата:
Сообщение от atenon Посмотреть сообщение
Неа логика железобетоная 2х2=4 было есть и вроде никто не планировал отменять, цикл выполняется один раз следовательно "а"(то есть 2) умножается на 2 один раз в итоге получается 4. Может быть вы не инициализировали переменную "а"?
Мой то код работает, получается 4, а тот что Вы написали, нет!
Marmelade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# ф-я возведения вещ числа в целую степень без include<math.h> Mitya999 Помощь студентам 5 14.12.2009 16:30
Забыл африфметическую операцию для возведения в N'ую степень pro100-delphi Паскаль, Turbo Pascal, PascalABC.NET 5 21.08.2009 16:18
Степень числа DmitryChuvashin Помощь студентам 2 11.03.2009 17:29
Степень числа Серафимий Долговяз Помощь студентам 3 26.02.2009 07:09