>> Плата за структурное программирование. В варианте Сергея Абрамова >> (в следующем письме) вводится дополнительная булевская переменная и >> тоже требуется дополнительная проверка
> И, кроме того, дополнительная переменная оказывается нелокальной > для цикла,-ов, хотя ей лучше быть локальной, ведь дальше она не > используется. Ну, это я так написал. Перетащите ее мышкой правее первого слова for и она станет локальной. По поводу "дальше она не используется"... это зависит от задачи ;-) Ее смысл: уже нашли или еще нет. То есть, это то самое <элемент обнаружен>. И в этом смысле, то, что я написал НИКАК не отличается от: > <установить на начало> > while (! <достигли конца> && ! <элемент обнаружен>) > <вычисление следующего и переход к нему> > if (<достигли конца>) > <действия, если элемент не найден> > else > <действия, если элемент найден> Считать, что вот такой переход в 2D-массиве: >, ++col; > if (col == MAXCOL) { > col = 0; > ++row; > } лучше вложенного цикла... Ну, не знаю ;-) Дело вкуса ;-) А о нем не спорят. Мои предпочтения давно в области прозрачности кода для чтения, а не в области эффективности для исполнения. Лет семь назад встретил цитаты из великих (не помню кто и цитата по памяти, не точный текст): > Под флагом и по причине борьбы за эффективность в программировании > совершено больше преступлений, чем по всем остальным причинам вмести > взятын. Включая непроходимую тупость. С тей пор как прочитал, как и отрезало ;-) PS. Я не уверен, что нормальный компилятор не удалит в моем тексте так называемую "лишнюю проверку" ;-) А "лишняя переменная" это не более, как экономия вычислений за счет табулирования ранее посчитанного значения. Кстати, если окажется, что она действительно лишняя, то и ее компилятор должен удалить (дефорестация). А читать приятнее с нею (опять, дело вкуса). Всего доброго, Сергей Абрамов