Как вынести из программы линейный поиск в отдельную функцию? - 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
, которая осуществляет линейный поиск заданного значения в массиве целых чисел. Функция принимает три аргумента:
value
- значение, которое необходимо найти в массиве.values
- массив целых чисел, в котором осуществляется поиск.n
- размер массиваvalues
. Внутри функции происходит следующий процесс:- Задаётся начальное значение переменной
i
равное 0. - Выполняется условие цикла
for
, которое проверяет, что значение переменнойi
меньшеn
. Если это условие выполняется, то происходит переход к следующему шагу цикла. В противном случае, функция завершает свою работу и возвращает значениеfalse
. - Внутри цикла происходит сравнение значения переменной
values[i]
сvalue
. Если они равны, то функция возвращает значениеtrue
. - Если значение переменной
values[i]
не равноvalue
, то значение переменнойi
увеличивается на 1, и цикл продолжается. - Если цикл завершается и не было найдено значение
value
, то функция возвращает значениеfalse
. Таким образом, данный код реализует линейный поиск значения в массиве.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д