![]() |
|
|
Регистрация | << Правила форума >> | 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. |