K:=i
Else
. .. {элемент не найден};
Добавление логической переменной Found сделало код безопасней, но добавило ему сложность – три проверки на один шаг цикла:
1 – i <= N?
2 – (not Found) and (i <= N) = true?
3 – A[ i ] = X?
Это, конечно, далеко не лучший вариант поиска!
Вариант 3 – поиск «с барьером»
Увеличим размер массива A на 1 – A: 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
…{ нет такого элемента в массиве };
Лабораторные задания
Сконструировать консольное приложение в соответствии с одним из приведенных ниже заданий.