Обобщить функцию линейного поиска - C (СИ)
Формулировка задачи:
Обобщить функцию линейного поиска
для применения при поиске элемента в массиве от элемента с индексом first по элемент с индексом last.
size_t linear_search(const int *a, size_t size, int key) { size_t idx = 0; while (a[idx]!=key && idx<size) ++idx; return idx; }
Решение задачи: «Обобщить функцию линейного поиска»
textual
Листинг программы
size_t LinearSearch(const int* const a, const size_t arrayLength, const size_t first, const size_t last, const int key, int* errorCodePtr) { size_t index = 0; size_t i = 0; int elementFound = 0; if (last > arrayLength) { (*errorCodePtr) = -1; /* wrong arguments */ } else { i = 0; elementFound = 0; while ((i < last) && !elementFound) { if (a[i] == key) { index = i; elementFound = 1; } i++; } if (!elementFound) { (*errorCodePtr) = -2; /* element was not found */ } } return index; }
Объяснение кода листинга программы
- Функция LinearSearch выполняет линейный поиск элемента в массиве.
- Параметр
a
указывает на массив, в котором будет производиться поиск. - Параметр
arrayLength
указывает длину массива. - Параметр
first
указывает на индекс первого элемента в массиве, с которого начинается поиск. - Параметр
last
указывает на индекс последнего элемента в массиве, где будет производиться поиск. - Параметр
key
указывает на элемент, который необходимо найти в массиве. - Параметр
errorCodePtr
указывает на указатель на переменную, в которую будет записано значение ошибки, если такая возникнет. - В начале функции инициализируются переменные
index
,i
иelementFound
со значениями 0. - Если
last
большеarrayLength
, то вerrorCodePtr
записывается значение -1, и функция возвращает 0. - Если
last
меньше или равноarrayLength
, то начинается цикл while, который выполняется до тех пор, покаi
меньшеlast
и элемент с ключомkey
не найден. - Внутри цикла проверяется равенство
a[i]
ключуkey
. - Если равенство выполняется, то переменная
index
устанавливается равнойi
, а переменнаяelementFound
устанавливается равной 1. - Если равенство не выполняется, то переменная
i
увеличивается на 1. - Если цикл закончился и элемент с ключом
key
не найден, то вerrorCodePtr
записывается значение -2, и функция возвращает 0. - Если элемент с ключом
key
найден, то функция возвращает значениеindex
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д