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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2007, 16:40   #11
PAVEL315
Форумчанин Подтвердите свой е-майл
 
Аватар для PAVEL315
 
Регистрация: 18.11.2006
Сообщений: 172
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
мда... вроде бы задачка 9 класса.
Для 7-ого...
Получилось, спасибо, но показывает зачастую искажённые значения, иногда отрицательные, иногда(больше 33) показывает 0.
дык!
PAVEL315 вне форума Ответить с цитированием
Старый 20.03.2007, 17:56   #12
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Если показывает отрицательное, тогда поставь тип возвращения не integer, а int64
zetrix вне форума Ответить с цитированием
Старый 20.03.2007, 18:02   #13
PAVEL315
Форумчанин Подтвердите свой е-майл
 
Аватар для PAVEL315
 
Регистрация: 18.11.2006
Сообщений: 172
По умолчанию

И ещё, просле 33 значение идёт 0, а выше 12 значения идут неправильными
дык!
PAVEL315 вне форума Ответить с цитированием
Старый 20.03.2007, 18:54   #14
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию

Ты сам то пробовал высчитать факториал 33, значение просто не помещаеться в переменную - оттуда и неправильный результат
Програмисты - единственные люди, которым платят за исправления их же ошибок
Speeker вне форума Ответить с цитированием
Старый 20.03.2007, 18:55   #15
VDLab
Embedder
Пользователь
 
Аватар для VDLab
 
Регистрация: 01.11.2006
Сообщений: 68
По умолчанию

Zetrix прав, нужно использовать int64, начиная с 13 факториал занимает больше четырех байт(32 разрядов). А для числа 33 последние 4 байта как раз нули, вот ноль и показывает. Для больших чисел и int64 не хватит.
[SHIFT] вправо, [SHIFT] влево считается [ESCAPE]ом и карается REBOOTом!

Последний раз редактировалось VDLab; 20.03.2007 в 18:59.
VDLab вне форума Ответить с цитированием
Старый 20.03.2007, 19:49   #16
Umen
Форумчанин
 
Аватар для Umen
 
Регистрация: 10.11.2006
Сообщений: 189
По умолчанию

Для того чтобы проверить правильность результата лучше вользоваться каким-нибудь метематическим пакетом, напрамер MATLAB, MATHCAD, DERIVE и др.
Umen вне форума Ответить с цитированием
Старый 20.03.2007, 21:43   #17
londoner
Пользователь
 
Регистрация: 03.02.2007
Сообщений: 20
По умолчанию

Вот правильный вариант. Решение двумя вариантами: рекурсией или циклом. Рекурсией эффективней, т.к. позже наступает численное преполнение.

Цитата:
function TForm1.FacRec(n: integer): integer;
begin
if n<0 then Exit;
if (n=1) or (n=0) then result:=1
else
result:=n*FacRec(n-1);
end;
function Tform1.Fac(n :integer): integer;
var i,f: integer;
begin
if n<0 then Exit;
f:=1;
for i:=2 to n do
f:=f*i;
result:=f;
end;
londoner вне форума Ответить с цитированием
Старый 21.03.2007, 07:32   #18
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Вычисление факториала конечно интересное дело.
Но в большинстве задач явно он никогда не вычисляется
например: найти сумму ряда ∑x^n/n!

Код:
n:=0;
summ:=1;
p:=1;
repeat
 n:=n+1;
 p:=p*x/n;
 summ:= summ+p;
until abs(p)>0.001
факториал явно не вычисляется хотя задача решена.
А если вы хотите видеть все цифры факториала числа,
то тут задача уже на длинную арифметику.
Можно её в принципе обсудить.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
последняя ненулевая цифра факториала Пашка Помощь студентам 6 04.04.2008 23:39
подскажите на счет факториала Lindemm Помощь студентам 4 26.03.2008 21:47
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
Вычисление интреграла Kiedis Помощь студентам 19 23.05.2007 19:41
Вычисление Exp Mickle Общие вопросы Delphi 1 26.04.2007 09:34