Показать сообщение отдельно
  #2  
Старый 21.02.2010, 09:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Называется "вложенный цикл".
Код:
var
  A : Array Of Integer; // сама последовательность, где последний эл = 0
  I, J : Integer;
  M : Integer;
begin
  For I := Length(A)-1 DownTo Low(A) Do
    Begin
      M := 1;
      For J := Low(A) To I Do
        M := M * A[J];
      A[i] := M;
    End;
end;

Весь фокус в том, что надо идти во внешнем цикле в обратную сторону, что бы не испортить цифры. Но можно решить эту задачу и по другому, в один цикл (алгоритмическая опимизация - вычисление следующего эл-та через предыдущий):

Код:
var
  A : Array Of Integer; // сама последовательность, где последний эл = 0
  I : Integer;
begin
  For I := Low(A)+1 To High(A)-1 Do
    A[i] := A[I-1] * A[i];
end;

Вот.