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

2. Входные данные

цел n- число элементов массива; простая переменная; ...

<тип> а- заданный одномерный массив; .....

3. Выходные данные

истина, если искомый элемент есть,

ложь, в противном случае.

лог y1– результат проверки;y1=

цел k1– номер искомого элемента; . . .

<тип> ak1– его значение; …

6. Метод

Пусть i- текущий номер элемента.

Используем y1следующим образом: пустьy1сохраняет значение "ложь", пока не найден нужный элемент, и меняет значение на "истина", как только элемент найден.

Тогда до начала поиска следует положить y1=ложь (элемент пока не найден).

Просматриваем элементы, пока они не удовлетворяют условию ине исчерпаны:

если текущий элемент удовлетворяет условию, то

Обработка элемента

- меняем y1 на истина (y1:=истина);

- k1:=i;

- ak1:=a(i);

кесли;

конец просмотра.

Задача «Проверка условия»

1. Условие. Проверить, все ли элементы заданного одномерного массиваa[n] удовлетворяют условиюВ2.

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

2. Входные данные

цел n- число элементов массива; простая переменная; ...

<тип> а- заданный одномерный массив; .....

3. Выходные данные

л

истина, если все элементы удовлетворяют условию,

ложь, в противном случае (хотя бы один элемент нарушает условие).

огy2– результат проверки;

y2=

цел k2– номер искомого элемента; . . .

<тип> ak2– его значение; …

6. Метод

Пусть i- текущий номер элемента.

Используем y2следующим образом: пустьy2сохраняет значение "истина", пока все элементы удовлетворяют условию, и меняет значение на "ложь", как только условие нарушается.

Тогда до начала поиска следует положить y2=истина (условие пока не нарушено).

Просматриваем элементы, пока они удовлетворяют условиюине исчерпаны:

если текущий элемент не удовлетворяет условию, то

Обработка элемента

- меняем y2 на ложь (y2:= ложь);

- k2:=i;

- ak2:=a(i);

кесли;

конец просмотра.

Указания к кодированию

Кодирование цикла-покана Паскале приведено в таблице базовых структур (см. приложение 1).

В Паскале логический тип описывается как boolean, константыистинаиложькакtrueиfalse, отрицание какnot (см. таблицу типов в приложении 2).

В логике вместо y=истиназаписываетсяy, вместоy =ложь –отрицаниеyy, читается «не-y»). При кодировании в Паскале можно использовать обе формы:y=trueто же, чтоy;y=falseто же, чтоnot y.

4.3. Задача со сложной логикой

Предлагаемая задача объединяет в себе несколько важных и поучительных моментов.

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

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

1. ЗадачаCond_2, или "поиск по 2-м условиям".

Найти номер первого максимального значения из всех элементов одномерного целого массива a[n], удовлетворяющих условиюc1и расположенных до первого элемента, удовлетворяющего условиюc2.

Уточнение: элемент, удовлетворяющийс2, по желанию и смыслу задачи можно включать или не включать в рассмотрение.

В данном случае он рассматривается.

Иллюстрация.

Пусть – элементы, удовлетворяющие условию с1, – элементы, удовлетворяющие условиюс2.

Возможные варианты расположения элементов:

Есть элементы, удовлетворяющие обоим условиям, и есть область поиска.

Схематическое описание ситуаций

Элемент, удовлетворяющий

Что делаем

с1

с2

1

есть

есть, как надо

ищем результат

2

есть

есть, не как надо

искать негде

3

есть

нет

уточняем, что делать: ищем до конца

4

нет

есть

искать негде

5

нет

нет

искать негде

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