Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [pascal] сумма факториалов n чисел


Автор: xF1x 18.3.2008, 10:48
Доброго времени суток!Помогите решить школьную задачу. найти сумму факториалов n чисел. 1!+2!+3!+...+n! За ранее благодарен!

Автор: Rodman 18.3.2008, 11:29
а какого типа переменную ты хошь использовать?! у тебя в паскале не хватит ресурсов!
Код

program facttest;
function factorial(n: byte): longint;
begin
    if (n = 0) then
        factorial := 1
    else
        factorial := n * factorial(n - 1);
end;
var
    nn: byte;
   z:double;
begin
    for nn := 1 to 5 do
        z:=z+factorial(nn);
    writeln(z);
   readln;
end.

Автор: Rrader 18.3.2008, 11:33
Код

Program MyProgram;

Var
  N, J: Word;
  Sum: Integer;

Function Factorial(N: Word): Integer;
Var
  F: Integer;
Begin
  F := 1;
  If N = 0 Then Exit;
  For N := 1 To N Do
    F := F * N;
  Factorial := F;
End;

Begin
  WriteLn('Enter N:');
  ReadLn(N);
  Sum := 0;
  For J := 1 To N Do Inc(Sum, Factorial(J));
  WriteLn('Sum is equal to:');
  WriteLn(Sum);
  ReadLn;
End.

Так быстрее, чем Rodman предложил...

Автор: xF1x 18.3.2008, 11:42
Спасибо большое, но мне вроде бы надо попроще, мы только что прошли вложенные циклы, а число n наверное не больше 10 должно быть так что word подойдет. если через вложенные циклы? получится?

Автор: Rodman 18.3.2008, 11:46
Код

Program MyProgram;
Var
  N, J, i: Word;
  Sum: Integer;
Begin
  WriteLn('Enter N:');
  ReadLn(N);
  Sum := 0;
  For J := 1 To N Do 
  begin 
      f:=1;
      For i := 1 To j Do
           F := F * i;  
     Inc(Sum, f);
  end; 
  WriteLn('Sum is equal to:');
  WriteLn(Sum);
  ReadLn;
End.
может так, проверить не могу!

Автор: xF1x 18.3.2008, 11:52
Вот!!! то что нужно! СПАСИБО ОГРОМНОЕ! ВЫРУЧИЛИ!
 smile  smile  smile  smile 

Автор: xF1x 18.3.2008, 17:40
Вот еще вопрос а что такое Inc? без него никак нельзя а то мне этого еще не преподавали!  smile 

Автор: THandle 18.3.2008, 17:49
xF1x
Inc(i) = i + 1.

Автор: Rodman 18.3.2008, 17:50
процедура inc(x) - увеличивает X на единицу (противоположная процедура dec)

если в INC есть второй параметр inc(x, z) - то к X прибавляется значение Z

Автор: xF1x 18.3.2008, 17:54
Program MyProgram;
Var
  N, J, i: Word;
  Sum: Integer;
Begin
  WriteLn('Enter N:');
  ReadLn(N);
  Sum := 0;
  For J := 1 To N Do 
  begin 
      f:=1;
      For i := 1 To j Do
           F := F * i;  
     I:=I+1;
  end; 
  WriteLn('Sum is equal to:');
  WriteLn(Sum);
  ReadLn;
End.

Все равно не работает пишет сумма равна 0

Автор: ama_kid 18.3.2008, 18:00
вместо I:=I+1 напиши Sum:=Sum+F;

Автор: xF1x 18.3.2008, 18:44
СПАСИБО ОГРОМНОЕ! ВСЕ РАБОТАЕТ!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)