Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Нужно написать программу в паскале, котроай находит n-факториал

Автор: Diablik 18.02.2008 23:29

Вот такая хрень:
Вычислить n-факториал
S: =0;
P:=1
P:= 1*2*3;
read
------

Автор: volvo 18.02.2008 23:34

Эта программа уже написана давным давно. Зайди в поиск и посмотри по слову "факториал", там каких только программ нет. И рекурсия, и итерация, и с длинными числами...

Автор: Гость 9.03.2008 15:51

зачем тибе програму целую держи функкцию которая считает факториал

function inf(x:integer):real;
Var s:real;
i:integer;
begin
s:=1;
for i:=1 to x do s:=i*s;
inf:=s;
end;

Автор: amega 9.03.2008 15:51

зачем тибе програму целую держи функкцию которая считает факториал

function inf(x:integer):real;
Var s:real;
i:integer;
begin
s:=1;
for i:=1 to x do s:=i*s;
inf:=s;
end;

Автор: volvo 9.03.2008 16:14

Цитата
зачем тибе програму целую держи функкцию которая считает факториал
А можно пример, как с помощью этой функции получить все цифры, ну скажем "25!" ? Не приблизительно, а точно. Вот меня, например, интересует 3 последних отличных от нуля цифры этого числа...

Автор: amega 9.03.2008 16:41

если я вас правильно понял то ви хотите увидить полностю 25!


function inf(x:integer):real;
Var s:real;
i:integer;
begin
s:=1;
for i:=1 to x do s:=i*s;
inf:=s;
end;
var c:real;
n:integer;
begin
writeln('Введите чило факториала');{в вашем случае 25}
Readln(n);
c:=inf(n);
writeln('c=',c:1:0);
readln;
end.



Вот оно вам виведет полностю 25! что становит
15511210043000000000000000

Автор: Archon 9.03.2008 19:10

Цитата
Вот оно вам виведет полностю 25! что становит
15511210043000000000000000

Да, а уже стандартный виндовский калькулятор выдаст 15511210043330985984000000

Автор: amega 9.03.2008 22:31

Точность типа real - 11-12
single - 7-8
Double - 15-16
Extended - 19-20

Автор: volvo 9.03.2008 22:38

Угу. Где-то в задании ты видел что-нибудь про точность? Не интересует конечного пользователя точность, понимаешь? Не интересует...

Есть результат: 25! = 15511210043330985984000000. И твоя функция может его либо выдать, либо не выдать. Третьего не дано. Твоя функция этого результата не выдает, значит, она работает неправильно.