Сумма чисел между двумя нулями
Здесь предполагается, что вводимая последовательность уже содержит как минимум 2 нуля. То есть ни какой предварительной проверки на наличие нулей не осуществляется.
Будем здесь искать сумму чисел memory между нулями (это будет временная сумма). Краткий смысл действий таков: как только мы ввели первый нуль, со следующего (ненулевого) ввода начинаем считать сумму вводимых чисел. После ввода второго нуля записываем вычисленную сумму, а временную суму memory обнуляем. Со следующего ненулевого числа снова начинаем вычислять сумму до последующего ввода нуля, и т.д.
Краткая последовательность действий по пунктам:
1) Итак, сначала мы вводим целое N (количество элементов), и полагаем memory := 0 (начальная сумма), IsZero := false (нулей в последовательности нет).
2) Заходим в цикл по N и вводим новое число b.
3) Проверяем условие (b=0) - мы ввели нулевое число; если оно выполняется, то:
- 3.1) Проверяем условие
(IsZero=false)
, или(not IsZero)
, означающее, что до этого мы не встречали нулей. Если да, то полалаемIsZero:=true
(мы встретили первый нуль). - 3.2) Иначе, если 3.1 не выполняется, то есть
IsZero=true
(число b=0 - это уже не первый нуль), то запоминаем вычисленную сумму:S:=memory
, а саму временную сумму обнуляем:memory:=0
. Итак, в предыдущем пункте, как только мы встречаем первый нуль, со следующего ввода числа b мы начинаем вычислять сумму memory (см. пункт 4). И так до того момента, пока не встретим следующий нуль.
4) Если условие 3 не выполняется (b<>0), то вычисляем вспомогательную сумму memory только в том случае, если мы уже встречали нуль (IsZero=true
). Пока мы не встретим первый нуль сумма вычисляться не будет.
5) После выхода из цикла выводим сумму S. В цикле эта сумма будет изменяться каждый раз, как мы будем встречать нуль.
|
Как и в предыдущем примере, последовательность должна содержать как минимум два нуля.
Здесь действия будут те же, кроме двух отличий. Во-первых, в начале, кроме вспомогательной суммы memory, нужно также инициализировать общую сумму: S:=0
. Во-вторых, как только в цикле находим каждый последующий нуль, сумме S не присваиваем временное memory, а увеличиваем её на memory, так как нас интересует вся сумма чисел от первого до последнего нуля, а не только сумма чисел между двумя последними нулями. Всё остальное не меняется.
|