Как вынести из программы линейный поиск в отдельную функцию? - 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. Таким образом, данный код реализует линейный поиск значения в массиве.