Обобщить функцию линейного поиска - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Обобщить функцию линейного поиска
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;
}
для применения при поиске элемента в массиве от элемента с индексом first по элемент с индексом last.

Решение задачи: «Обобщить функцию линейного поиска»

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;
}

Объяснение кода листинга программы

  1. Функция LinearSearch выполняет линейный поиск элемента в массиве.
  2. Параметр a указывает на массив, в котором будет производиться поиск.
  3. Параметр arrayLength указывает длину массива.
  4. Параметр first указывает на индекс первого элемента в массиве, с которого начинается поиск.
  5. Параметр last указывает на индекс последнего элемента в массиве, где будет производиться поиск.
  6. Параметр key указывает на элемент, который необходимо найти в массиве.
  7. Параметр errorCodePtr указывает на указатель на переменную, в которую будет записано значение ошибки, если такая возникнет.
  8. В начале функции инициализируются переменные index, i и elementFound со значениями 0.
  9. Если last больше arrayLength, то в errorCodePtr записывается значение -1, и функция возвращает 0.
  10. Если last меньше или равно arrayLength, то начинается цикл while, который выполняется до тех пор, пока i меньше last и элемент с ключом key не найден.
  11. Внутри цикла проверяется равенство a[i] ключу key.
  12. Если равенство выполняется, то переменная index устанавливается равной i, а переменная elementFound устанавливается равной 1.
  13. Если равенство не выполняется, то переменная i увеличивается на 1.
  14. Если цикл закончился и элемент с ключом key не найден, то в errorCodePtr записывается значение -2, и функция возвращает 0.
  15. Если элемент с ключом key найден, то функция возвращает значение index.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы