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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2010, 14:48   #1
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию Нахождение факториала

Код:
#include <stdio.h>
#include <locale.h>
int main(){
	setlocale(LC_ALL,"Russian");
	int n,a,b,fac1;
	printf("combs.in:");
	scanf("%d",&n);
	b=n-1;
	fac1=n+0;
	while(b!=1){
		fac1=fac1*b;
		b=b-1;
	}
	printf("combs.out:%d\n",fac1);
	return 0;
}
Делаю по формуле n!=n!*(n-1)*(n-2)*...*2*1
(Пример 4!=4*(4-1)*(4-1-1)*(4-1-1-1)=24
корректно вычисляет на числа до 20,начиная с 20 пишет отрицательное число

В чем ошибка?

Последний раз редактировалось Hemul; 29.10.2010 в 15:00.
Hemul вне форума Ответить с цитированием
Старый 29.10.2010, 14:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
корректно вычисляет на числа до 20,начиная с 20 пишет отрицательное число
Ну а чего ты хотел? Процессор то не резиновый
Он не может объять необьятное
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2010, 14:59   #3
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

а можно как нибудь сделать чтобы и после 20 считал?)
Hemul вне форума Ответить с цитированием
Старый 29.10.2010, 15:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну поищи примеры с длинной арифметикой...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2010, 10:08   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

числа, большие 2147483647, из-за знакового бита представляются как отрицательные
бери длинную арифметику либо поменяй тип fac1 на float или double
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисление факториала (Pascal) DsDevis Помощь студентам 8 09.12.2010 18:56
вычесление факториала числа ольга сокол Помощь студентам 4 30.03.2010 08:08
вычисление факториала в С++ mephistophel Помощь студентам 4 10.03.2010 12:43
Си, вычисление факториала ManInBlack Помощь студентам 2 07.03.2009 00:50
Ассемблер - вывод факториала Voortex Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 07.12.2008 12:29