Вариант от info21 (псевдоцикл Дейкстры)i := 0;
oneZero := FALSE; (*oneZero = перед i стоит нуль*)
WHILE (i < LEN(a)) & ~oneZero DO
oneZero := a[i] = 0;
INC(i);
ELSIF (i < LEN(a)) & (a[i] # 0) DO
oneZero := FALSE;
INC(i);
END;
плох тем, что оставляет неверное представление о настоящем цикле Дейкстры.
Вообще я попробовал сделать этот алгоритм в виде цикла Дейкстры, но что-то сомневаюсь, что из этого выйдет что-то путное -- ну не подходит этот алгоритм для ЦД. Вот что реально из себя представляет алгоритм, представленный info21:
i := 0;
found := FALSE; (* found = (a[i-1] = 0) & (a[i] = 0) *)
WHILE (i < LEN(a)) & ~found DO
WHILE (i < LEN(a)) & a[i] # 0 DO INC(i) END;
IF (i < LEN(a)) & a[i] # 0 THEN INC(i)
ELSE found := TRUE
END;
END;