Как вынести из программы линейный поиск в отдельную функцию? - C (СИ)

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

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

Добрый день всем, я для саморазвития решил изучить основы Си, сам я очень далек от программирования. Сейчас прохожу небольшой курс, и в одном практическом задании я должен написать программу, которая: 1) создает массив псевдослучайных чисел 2) упорядочивает их пузырьковой сортировкой 3) с помощью линейного поиска находит в массиве нужное число. C этим я кажется справился. Теперь я хочу линейный поиск, вынести в отдельную функцию. Но это у меня не выходит, выдаёт ошибку - "для индекса требуется массив или указатель" "выражение должно иметь тип указателя на объект" - в строке 63 Работаю в программе - Visual Studio 2015
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int poisk(int);
  6. int main()
  7. {
  8. int poisk();
  9. int arr[6];
  10. int temp, ctr = 0;
  11. int didswap;
  12. printf("unsorted list\n");
  13. time_t t;
  14. srand(time(&t));
  15. for (int i = 0; i < 6; i++)
  16. {
  17. arr[i] = ( ( rand() % 10 ) + 1 );
  18. printf( " %d ", arr[i] );
  19. }
  20. //сортирует числа, пузырьком
  21. printf("\n \n sorted list\n");
  22. do
  23. {
  24. didswap = 0;
  25. for (int i = 0; i < 5; i++)
  26. {
  27. if (arr[i] > arr[i + 1])
  28. {
  29. temp = arr[i];
  30. arr[i] = arr[i + 1];
  31. arr[i + 1] = temp;
  32. didswap = 1;
  33. }
  34. }
  35. ctr = ctr++;
  36. }
  37. while (ctr < 10 && didswap != 0); //проверятся были ли внесено хотя бы одно изменеие, есди нет, то цикл заканчивается
  38.  
  39. //выводит на экран отсартированный массив
  40. for (int i = 0; i < 6; i++)
  41. {
  42. printf(" %i ", arr[i]);
  43. }
  44. poisk( arr );
  45. system("pause");
  46. }
  47.  
  48. int poisk(int arr)
  49. {
  50. int search = 3;
  51. for (int i = 0; i < 5; i++)
  52. {
  53. if (arr[i] == search)
  54. {
  55. printf("\n \nfound the item number - %i", i + 1);
  56. break;
  57. }
  58. }
  59. printf("\n");
  60. }

Решение задачи: «Как вынести из программы линейный поиск в отдельную функцию?»

textual
Листинг программы
  1. bool search(int value, int values[], int n)
  2. {
  3.     for (int i = 0; i < n; i++)
  4.    {
  5.       if (values[i] == value)
  6.       {
  7.        return true;
  8.       }
  9.    }
  10.    return false;
  11. }

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

В данном коде представлена реализация функции search, которая осуществляет линейный поиск заданного значения в массиве целых чисел. Функция принимает три аргумента:

  1. value - значение, которое необходимо найти в массиве.
  2. values - массив целых чисел, в котором осуществляется поиск.
  3. n - размер массива values. Внутри функции происходит следующий процесс:
  4. Задаётся начальное значение переменной i равное 0.
  5. Выполняется условие цикла for, которое проверяет, что значение переменной i меньше n. Если это условие выполняется, то происходит переход к следующему шагу цикла. В противном случае, функция завершает свою работу и возвращает значение false.
  6. Внутри цикла происходит сравнение значения переменной values[i] с value. Если они равны, то функция возвращает значение true.
  7. Если значение переменной values[i] не равно value, то значение переменной i увеличивается на 1, и цикл продолжается.
  8. Если цикл завершается и не было найдено значение value, то функция возвращает значение false. Таким образом, данный код реализует линейный поиск значения в массиве.

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


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

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

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы