Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posobie.doc
Скачиваний:
27
Добавлен:
31.03.2015
Размер:
1.43 Mб
Скачать

4.2. Поиск элемента, удовлетворяющего заданному условию

● Возможные формулировки задач

Задача «Поиск по условию».Среди заданного множества элементовнайтипервыйэлемент, удовлетворяющий условиюВ1 (обозначим условие в общем виде).

Задача «Проверка условия».Проверить,все лиэлементы заданного множества удовлетворяют условиюB2.

● Анализ формулировок

Сначала покажем, что приведенные постановки после уточнения можно рассматривать как варианты одной задачи.

•• Формулировка первой задачи– наиболее типичная, однако неточная. Во-первых, предполагается ли, что искомого элемента может не быть, и если да, то как это зафиксировать? Во-вторых, что следует найти – значение, номер, то и другое?

Целесообразно рассматривать общий случай; тогда решение будет универсальным. Полная постановка задачи может выглядеть, например, так.

Проверить,есть лисреди заданного множества элементов элемент (хотя бы один),удовлетворяющийусловиюВ1(подразумеваемая часть условия задачи).

Если искомый элемент есть, то найти его значение и номерпервогоудовлетворяющего условиюэлемента (явная часть условия задачи).

Будем считать, что приведенная сначала краткая формулировка подразумевает именно такую трактовку.

Входные данные: совокупность элементов.

Выходные данные:

  • результат проверки;

  • з

    только в случае положительного результата проверки

    начение элемента;

  • его номер.

•• Вформулировке второй задачинеточностей нет. Здесь очевидно, что результат проверки может быть как отрицательным, так и положительным.

Расширим эту постановку следующим образом.

Проверить,все лиэлементы заданного множестваудовлетворяют условиюB2.

Если нет, то найти значение и номерпервогоэлемента,не удовлетворяющего условию.

Входные данные: совокупность элементов.

Выходные данные:

  • результат проверки;

  • з

    только в случае отрицательного результата проверки

    начение элемента;

  • его номер.

По существу это две взаимообратимые формулировки одной и той же задачи, где В2является отрицаниемВ1. Например, проверить, есть ли в множестве хотя бы один отрицательный элемент, и найти его номер (здесь условиеВ1: элемент отрицателен) – то же, что проверить, все ли элементы множества неотрицательны, и найти номер первого отрицательного (В2: элемент неотрицателен ).

Однако на практике целесообразно не сводить задачу к одной из двух формулировок, чтобы не путаться с логическими операциями, включающими отрицание, а решать задачу так, как она поставлена.

● В качестве множества элементов будем рассматривать одномерный массив a[n].

● Ответы "да", "нет" при алгоритмизации наиболее точно отображаются логической переменной. Таким образом, суть решения сводится к поиску значения этой логической переменной как результата проверки.

● В рамках завершенной программы при выводе ответа в выходной форме более естественно использовать обычный язык. Тогда результат проверки приобретет статус промежуточного данного, в зависимости от значения которого выведется положительный или отрицательный ответ на вопрос задачи.

Используем уже привычную простейшую схему нисходящего проектирования (выделение в первую очередь подзадач ввода-вывода входных данных; обработки; вывода результатов). Тогда формирование выходных данных, в том числе упомянутого логического результата проверки, будет отнесено к подзадаче обработки (собственно поиска), а вывод, в том числе текста ответа на вопрос задачи в зависимости от результата проверки, реализуется в подзадаче вывода.

Подзадачи ввода и вывода опустим как не содержащие ничего нового.

● Идея метода решения подзадачи поиска.

Задача «Поиск по условию»

1. Условие. Проверить, есть ли в одномерном массивеa[n] элемент (хотя бы один), удовлетворяющий условиюВ1.

Если есть, то найти значение и номер первого такого элемента.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]