Другие языки программирования и технологии

Паскаль, одномерн массив, вычислить сумму элементов массива, расположенных после последнего элемента, равного нулю. Спасибо)

цикл - от 1 до последнего элемента
(если текущий элемент =0, запоминаем индекс)

второй цикл - от запомненного индекса из первого цикла до последнего элемента
(берем переменную, к примеру С) и в цикле в это считаем С=С+текущий элемент

хотя наверно вариант за один проход лучше =)

Да кстати, есть там вариант еще пойти с конца массива, просто в цикле пишется не:
фор 1 ту Н
а так:
фор Н даунту 1
^^ как-то так
Леонид Кузнецов
Леонид Кузнецов
546
Лучший ответ
Можно, например, складывать числа с конца массива, до тех пор, пока не встретиться ноль. Он и будет последним нулём в массиве. Это метод решения. Алгоритм, примерно, - чтение последнего элемента, дальше - цикл с предусловием - "while", условие - неравенство элемента нулю, в цикле - сложение и взятие нового элемента массива. Это без проверки окончания массива, если в нём обязательно есть ноль. Если ноля может не быть, то нужна проверка на окончание массива.
Паскаль знаю плохо.
MK
Mr. Kid Xd
52 844
В чем трудность?
идешь по массиву, находишь ноль, начинаешь считать сумму, если находишь ноль, сбрасываешь сумму. Все. За один проход мы все сделали
РР
Роман Роман
1 107
не уверен, что правильно по синтаксису паскаля, но алгоритм верен:
var
m[1..100]: array of integer;
s, i : integer;
begin
...// здесь мы каким-то образом нагружаем массив (из файла или с консоли, например)
for i=1 to 100 do //открываем цикл от первого до последнего элемента массива
begin
s:=s+m[i] //прибавляем к сумме следующий элемент массива
if m[i]=0 then s:=0; //если элемент массива равен нулю, то обнуляем сумму
end;
end.

Похожие вопросы