Консультация № 146266
06.10.2008, 21:45
0.00 руб.
0 4 1
Здравствуйте, уважаемые эксперты! Помогите реализовать следующую задачу:
y=1 + (x^2 / 2!) + (x^4 / 4!) + ... + (x^2N / (2N)! ).
Вводится 2 значения: Е и х. Е - это предел у (т. е. необходимо проверять, насколько (x^2N / (2N)! ) мало по отношению к Е; как я понимаю, (x^2N / (2N)! ) должно быть меньше, чем Е, тогда можно прервать цикл).
В общем, алгоритм и решение кода трудностей не вызывает, за исключением одного: факториал. Не могу реализовать цикл нахождения факториала. Лаборант сказала, что функции факториала в страндартных юнитах не существует.
Если не очень хочется писать решение всей задачи, то хотя бы помогите реализовать нахождение факториала (подключение других модулей, кроме math естественно, исключается).
Премного благодарен.
P. S. В Дельфи есть функция, позволяющая решить данную задачу, но этот вариант исключается.

Обсуждение

Неизвестный
06.10.2008, 21:53
общий
Цитата: Silent_Control
нахождение факториала

Так пойдёт?
Код:
 
function fakt(var n: integer): integer;
var
i, rez: integer;
begin
rez := 1;
for i:=1 to n do
rez := rez * i;
fakt := rez;
end;
Неизвестный
06.10.2008, 22:21
общий
С рекурсией:
Код:
  function fact(n:word):longint;
begin
if n<=1 then begin
fact:=1;
exit;
end;
fact:=fact(n-1)*n;
end;


Без рекурсии:
Код:
  function factorial(n:word):longint;
var
i:word;
f:longint;
begin
if n<=1 then begin
factorial:=1;
exit;
end;
f:=1;
for i:=1 to n do f:=f*i;
factorial:=f;
end;
Неизвестный
07.10.2008, 08:43
общий
это ответ
Здравствуйте, Silent_Control!
Сделайте свою функцию для нахождерния факториала и используйте.
Что-то примерно того (функция factorial(n:integer): integer описана в приложении):
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:= IntToStr(factorial(7));
end;

Приложение:
function TForm1.factorial(n:integer): integer;
var
temp, i: integer;
begin
temp:= 1;
for i:= 1 to n do temp:= temp * i;
factorial:= temp;
end;
Неизвестный
07.10.2008, 21:26
общий
Спасибо всем, кто помог!
Форма ответа