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

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

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

Добрый день всем, я для саморазвития решил изучить основы Си, сам я очень далек от программирования. Сейчас прохожу небольшой курс, и в одном практическом задании я должен написать программу, которая: 1) создает массив псевдослучайных чисел 2) упорядочивает их пузырьковой сортировкой 3) с помощью линейного поиска находит в массиве нужное число. C этим я кажется справился. Теперь я хочу линейный поиск, вынести в отдельную функцию. Но это у меня не выходит, выдаёт ошибку - "для индекса требуется массив или указатель" "выражение должно иметь тип указателя на объект" - в строке 63 Работаю в программе - Visual Studio 2015
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int poisk(int);
 
int main()
{
    int poisk();
    int arr[6];
    int temp, ctr = 0; 
    int didswap;
 
    printf("unsorted list\n");
    time_t t; 
    srand(time(&t));
    for (int i = 0; i < 6; i++)
    {
        arr[i] = (  ( rand() % 10 ) + 1 );
        printf( " %d ", arr[i] );
    }
    
    //сортирует числа, пузырьком
    printf("\n \n sorted list\n");
    do
    {
        didswap = 0;
        for (int i = 0; i < 5; i++)
        {
            if (arr[i] > arr[i + 1])
            {
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
                didswap = 1;
            }
        }
        
        ctr = ctr++; 
    }
    while (ctr < 10 && didswap != 0); //проверятся были ли внесено хотя бы одно изменеие, есди нет, то цикл заканчивается

    //выводит на экран отсартированный массив
    for (int i = 0; i < 6; i++)
    {
        printf(" %i ", arr[i]);
    }
 
    poisk( arr );
    
    system("pause");
}

int poisk(int arr)
{
    int search = 3;
    for (int i = 0; i < 5; i++)
    {
        if (arr[i] == search)
        {
            printf("\n \nfound the item number - %i", i + 1);
            break;
        }
    }
    printf("\n");
}

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

textual
Листинг программы
bool search(int value, int values[], int n)
{
    for (int i = 0; i < n; i++)
   {
      if (values[i] == value)
      {
       return true;
      }
   }
   return false;
}

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

В данном коде представлена реализация функции 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
Похожие ответы