Номер §8 ПМ 3

ГДЗ по информатике 11 класс, Босова 2024, страница 107

§ ПМ Условие последовательного поиска

Внимательно рассмотрите условие продолжения цикла. В каком случае выполнение цикла продолжается? В каких случаях осуществляется выход из цикла?
В примере 3 выполняется последовательный поиск элемента, равного p, в массиве a[1..n], где n=10:

i:=1;
while (i<=n) and (a[i]<>p) do i:=i+1;
if i=n+1
then writeln('Искомого элемента в массиве нет')
else writeln('Искомый элемент a[', i, '] = ', a[i])
Решение

По определению логической операции and из §, составное условие истинно только тогда, когда истинны обе его части. Здесь первая часть i<=n означает, что индекс ещё находится в пределах массива. Вторая часть a[i]<>p означает, что текущий элемент не равен искомому.

По правилу цикла с предусловием while тело выполняется, пока условие истинно. Поэтому поиск продолжается, если текущий элемент существует и ещё не подходит. Команда i:=i+ переводит поиск к следующему элементу.

Первая причина выхода — найден элемент: при некотором индексе от до n выполнено a[i]=p. Тогда вторая часть условия ложна. Индекс больше не увеличивается, а ветвь else выводит найденный элемент и его положение. Поскольку просмотр идёт слева направо, находится первое вхождение p.

Вторая причина выхода — просмотрены все элементы. После проверки последнего неподходящего элемента индекс увеличится с n до n+. Тогда первая часть условия ложна; проверка i=n+ подтверждает отсутствие p в массиве.

Например, при начале массива , , и p= индекс проходит значения , , . На третьем элементе условие <> ложно, поэтому найден индекс . Если p отсутствует во всех десяти ячейках, после десяти увеличений получаем i=.

При выполнении исходной программы нужно использовать сокращённое вычисление логического and: когда i<=n ложно, обращение к a[i] уже не должно вычисляться. Иначе при i=n+ возникнет выход за границы массива. В Free Pascal это режим {$B-}. Таким образом, два штатных результата поиска — первое совпадение или отсутствие элемента.

Ответ

Цикл продолжается при i<=n и a[i]<>p. Выход: найдено первое совпадение a[i]=p либо достигнуто i=n+ и элемента нет. Условие следует вычислять сокращённо, без обращения к a[n+].

Помогло?

Нет твоего задания?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото