Функция линейного поиска компилируется, но не выводится - PullRequest
0 голосов
/ 30 июня 2018

Я не понимаю, что не так с этим кодом линейного поиска. Компилируется, но при выполнении завершает работу без вывода.

turns - no. of test cases.
size  - size of array.
x     - element to be searched.


#include <stdio.h>

int linearSearch(int arr[], int size, int element)
{
    int i = 0;
    for(i=0; i< size; i++)
    {
        if(arr[i] == element)
        {
            return i;
        }
    }
    return 0;
}

int main()
{
    int turns, size;
    scanf("%d", &turns);

    while(turns--)
    {
        scanf("%d", &size);
        int arr[size];

        for(int j=0; j < size; j++)
        {
            scanf("%d", arr[j]);
        }
        int x;
        scanf("%d", &x);
        int k = linearSearch(arr, size, x);
    }

    return 0;

}

1 Ответ

0 голосов
/ 30 июня 2018

В вашем коде есть одна серьезная проблема.

Сначала вам нужно передать адрес вашего элемента массива (&arr[j]).

И вывод не отображается, потому что вы его не распечатываете.

Правильный код

#include <stdio.h>

int linearSearch(int arr[], int size, int element)
{
    int i = 0;
    for(i=0; i< size; i++)
    {
        if(arr[i] == element)
        {
            return i;
        }
    }
    return 0;
}

int main()
{
    int turns, size;
    scanf("%d", &turns);

    while(turns--)
    {
        scanf("%d", &size);
        int arr[size];

        for(int j=0; j < size; j++)
        {
            scanf("%d", &arr[j]);
        }
        int x;
        scanf("%d", &x);
        int k = linearSearch(arr, size, x);
        printf("%d\n", k);
    }

    return 0;

}
...