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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2012, 18:00   #1
Freewill
Пользователь
 
Аватар для Freewill
 
Регистрация: 11.03.2011
Сообщений: 19
Хорошо Факториал.

Код:
int factr (int f) {

	int t,answer;

	answer=1;

	for(t=1;t<=f;t++)
		answer=answer*(t);

	return(answer);
}
вбиваю, например, e=factr(32), ответ получается отрицательный. В чем дело?
Freewill вне форума Ответить с цитированием
Старый 12.02.2012, 18:07   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Freewill Посмотреть сообщение
Код:
int factr (int f) {

	int t,answer;

	answer=1;

	for(t=1;t<=f;t++)
		answer=answer*(t);

	return(answer);
}
вбиваю, например, e=factr(32), ответ получается отрицательный. В чем дело?
Чему на самом деле равен факториал 32?
Какое максимальное число может влезть в int?
Что произойдёт со значением знакового int , в случае его переполнения?
_Bers вне форума Ответить с цитированием
Старый 12.02.2012, 18:15   #3
Freewill
Пользователь
 
Аватар для Freewill
 
Регистрация: 11.03.2011
Сообщений: 19
По умолчанию

А что если мне он нужен в вычислениях, а он даже в long int не влезет?
Freewill вне форума Ответить с цитированием
Старый 12.02.2012, 19:11   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Freewill
1. изменить алгоритм
2. использовать библиотеки для работы с длинной арифметикой
3. сменить язык
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 12.02.2012, 20:11   #5
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от Freewill Посмотреть сообщение
А что если мне он нужен в вычислениях, а он даже в long int не влезет?
Вы можете в качестве возвращаемого значения использовать тип unsigned long long

Например,

Код:
unsigned long long factorial( unsigned int n )
{
   unsigned long long result = 1;

   while ( n > 1 ) result *= n--;

   return (  result );
}
Со мной можно встретиться на www.clipper.borda.ru

Последний раз редактировалось Сыроежка; 12.02.2012 в 20:14.
Сыроежка вне форума Ответить с цитированием
Старый 12.02.2012, 20:44   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Сыроежка
пост автора вообще читал? чем ему твой ответ поможет?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Факториал artscorp Помощь студентам 7 10.05.2011 19:54
факториал в с++ sp.caster Помощь студентам 8 03.04.2011 10:40
Факториал Freeman-des Помощь студентам 20 14.01.2011 11:05
Факториал Dracula777 Помощь студентам 4 26.02.2010 22:56
C++ (факториал) slim>>> Помощь студентам 2 13.01.2010 20:34