If Found then

K:=i

Else

. .. {элемент не найден};

Добавление логической переменной Found сделало код безопасней, но добавило ему сложность – три проверки на один шаг цикла:

1 – i <= N?

2 – (not Found) and (i <= N) = true?

3 – A[ i ] = X?

Это, конечно, далеко не лучший вариант поиска!

Вариант 3 – поиск «с барьером»

Увеличим размер массива A на 1A: array[1..N+1] of integer;

Присвоим элементу A[N+1] значение X. A[N+1] – это «барьер».

A[N+1]:= X;

i:=1;

while (A[ i ]< >X) do // цикл завершается всегда

i:=i+1;

if i <= N then // цикл завершился при i <= N – элемент найден

K:=i

Else

. .. {элемент не найден};

Не продолжайте обработку массива после того, как результат получен

Пусть переменная Found принимает значение true, если в массиве есть хотя бы один элемент больше 0, иначе – false

Вариант 1

Found:= false;

for:=1 to N do begin

if A[i]>0 then

Found:= true; // элемент найден, но цикл продолжается!

end;

If Found then

…{ элемент найден }

Else

…{ нет такого элемента в массиве };

Вариант 2

Found:= false;

for:=1 to N do begin

if A[i]>0 then begin

Found:= true; // элемент найден,

break; // выход из цикла!

end;

end;

If Found then

…{ элемент найден }

Else

…{ нет такого элемента в массиве };


Лабораторные задания

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: