![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Дана непустая последовательность положительных целых чисел а1,a2…., оканчивающаяся нулем. Получить a1, a1 *a2 , a1 *a2*a3 ,…, 0.
![]() |
|
#2
|
|||
|
|||
|
Называется "вложенный цикл".
Код:
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;Вот. |
|
#3
|
|||
|
|||
|
Спасибо. Весь парился из-за того, что при реализации задачи нам было запрещено использование массивов.
|
|
#4
|
|||
|
|||
|
Тему можно закрыть
Последний раз редактировалось Muxa, 21.02.2010 в 12:31. |