Обработка массива —Поиск

Основной вопрос задач поиска — где в массиве находится элемент, обладающий нужным свойством. При этом свойство должно быть абсолютным: для определения пригодности элемента достаточно знать только этот элемент. Большинство задач поиска сводится к задаче — найти в массиве элемент с заданным значением.
Некоторые свойства элементов массива
Свойство
Запись свойства
четныеa[i] mod 2 = 0
нечетные     a[i] mod 2 <> 0
кратные k     a[i] mod k = 0
некратные ka[i] mod k <> 0
 на четных местах    i mod 2 = 0
запись числа заканчивается на цифру ka[i] mod 10=k
на нечетных местах   i mod 2 <> 0
положительныеa[i] > 0
неотрицательные a[i] >= 0
меньше х1 или больше х2(a [i]x2)
в интервале (х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 (ido
 i:=i+1;
         if a[i]>0 then k:=i;
         if k=0 then writeln ('положительных элементов нет')
                   else writeln(k);
end.

Комментариев нет:

Отправить комментарий