Основной вопрос задач поиска — где в массиве находится элемент, обладающий нужным свойством. При этом свойство должно быть абсолютным: для определения пригодности элемента достаточно знать только этот элемент. Большинство задач поиска сводится к задаче — найти в массиве элемент с заданным значением.
Свойство
|
Запись свойства
|
четные | a[i] mod 2 = 0 |
нечетные | a[i] mod 2 <> 0 |
кратные k | a[i] mod k = 0 |
некратные k | a[i] mod k <> 0 |
на четных местах | i mod 2 = 0 |
запись числа заканчивается на цифру k | a[i] mod 10=k |
на нечетных местах | i mod 2 <> 0 |
положительные | a[i] > 0 |
неотрицательные | a[i] >= 0 |
меньше х1 или больше х2 | (a [i] |
в интервале (х1; х2) | (a [i]>x1) and (a [i] |
Задача 1. Найти номер первого по счету положительного элемента массива.
Использование цикла с параметром (.pas)
| |
Исходные данные: массивa, содержащий n вещественных чисел. Результат: k - номер первого положительного элемента массива . Метод решения: - просматриваем массив с конца, если находим положительный элемент, то переменной k присваиваем номер данного положительного элемента; - если находим положительный элемент с меньшим номером, то меняем значение переменной k; - если значение k осталось равным 0, то положительных элементов в данном массиве нет. . | |
program z; const n=30; type mas= array [1..n] of real; var a: mas; i, k: integer; begin k:=0; for i:=1 to n do read (a[i]); for i:=n downto 1 do if a[i]>0 then k:=i; if k=0 then writeln ('положительных элементов нет') else writeln(k); end. | |
Использование цикла с постусловием (.pas)
| |
Исходные данные: массивa, содержащий n вещественных чисел. Результат: k - номер первого положительного элемента массива . Метод решения: - просматриваем массив, начиная с первого элемента, если находим положительный элемент, то переменной k присваиваем номер данного положительного элемента; -работа цикла заканчивается, если значение k изменилось или если просмотрен весь массив; - если значение k осталось равным 0, то положительных элементов в данном массиве нет. | |
program z; const n=5; type mas= array [1..n] of real; var a: mas; i,k: integer; begin for i:=1 to n do read (a[i]); k:=0; i:=0; repeat i:=i+1; if a[i]>0 then k:=i; until (k>0) or (i=n); if k=0 then writeln ('положительных элементов нет') else writeln(k); end. | |
Использование цикла с предусловием (.pas)
| |
Исходные данные: массивa, содержащий n вещественных чисел. Результат: k - номер первого положительного элемента массива . Метод решения: - просматриваем массив: если текущий элемент неположительный и i < n, то значение переменной i увеличиваем на 1, иначе если текущий элемент положительны, то переменной k присваиваем номер данного положительного элемента; - если значение k осталось равным 0, то положительных элементов в данном массиве нет. | |
program z; const n=7; type mas= array [1..n] of real; var a: mas; i,k: integer; begin for i:=1 to n do read (a[i]); k:=0; i:=1; while (a[i]<=0) and (i if a[i]>0 then k:=i; if k=0 then writeln ('положительных элементов нет') else writeln(k); end. |
Комментариев нет:
Отправить комментарий