Поиск в массиве
Требуется найти в массиве элемент, значение которого равно значению переменной X, или сообщить, что такого элемента в массиве нет. Алгоритм решения сводится к просмотру всех элементов массива с первого до последнего. Как только будет найден элемент, равный X, нужно выйти из цикла и вывести результат. Напрашивается такой
Он хорошо работает, если нужный элемент в массиве есть, однако приведёт к ошибке, если такого элемента нет, — получится зацикливание и выход за границы массива. Поэтому в условие нужно добавить ещё одно ограничение: i<=N. Если после окончания цикла это условие нарушено, значит, поиск был неудачным — элемента нет:
Отметим одну тонкость. В сложном условии i<=N и A[i]<>X первой должно проверяться именно отношение i<=N. Если первая часть условия, образованного с помощью операции «И», ложно, то вторая часть, как правило 1, не вычисляется — уже понятно, что всё условие ложно. Дело в том, что если i>N, проверка условия A[i]<>X приводит к выходу за границы массива, и программа может завершиться аварийно.
1 Это зависит от транслятора и его настроек. В школьном алгоритмическом языке и во многих других современных языках (например, в С, C++, Python, Javascript, PHP) такое поведение гарантировано стандартом, а в Паскале — нет.
Возможен ещё один поход к решению этой задачи: используя цикл с переменной, перебирать все элементы массива и досрочно завершить цикл, если найдено требуемое значение.
Здесь для выхода из цикла используется оператор выход (в Паскале — break), номер найденного элемента сохраняется в переменной nХ. Если её значение осталось равным нулю (не изменилось в ходе выполнения цикла), то в массиве нет элемента, равного X.
Следующая страница Максимальный элемент