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