Pesquisa linear. Modifique o programa da Figura 6.18 para que seja possível usar uma função linearSearch recursiva na realização da pesquisa linear do array. A função deverá receber um array de inteiros e o tamanho do array como argumentos. Se a chave de pesquisa for encontrada, retorne o subscrito do array; caso contrário, retorne –1.

Passo 1

Opaa, tudo bom?

Prontos pra mais um programa?

Inicialmente, colocamos nossa biblioteca padrão em C e já definimos o valor da variável SIZE, que nos ajudará a definir o tamanho de nosso array. Em seguida, já colocamos o protótipo da função linearSearch com seus respectivos parâmetros formais.

Após isso vamos para o main, logo de início já definimos quais serão as variáveis usadas no nosso programa e de que tipo elas são. Desse modo temos, a variável searchKey que recebe qual valor deve ser procurado no array, a variável element que guardará a posição em que o número a ser pesquisado se encontra. E além disso, temos também a inicialização do nosso array.

Passo 2

Ainda no main, perguntamos ao usuário que número ele gostaria de verificar se está no nosso array, e guardamos esse número na variável searchKey como já havíamos mencionado. Em seguida, a variável element fica responsável por guardar o retorno da nossa função linearSearch. E depois, utilizamos os operadores condicionais if/else para exibir mensagens ao usuário de acordo com o valor de element, caso seja -1 será exibido a mensagem que o valor não foi encontrado, porém se for diferente de -1 será impresso a posição onde ele se encontra.

Tudo certinho até aqui?

Passo 3

Seguimos para a função linearSearch, cujos parâmetros são o nosso array, a chave a ser pesquisada e o tamanho do nosso vetor. Dentro da função comparamos se a última posição é a nossa chave, caso não seja então fazemos a chamada novamente da mesma função, por isso é uma função recursiva. A cada chamada o tamanho tem que sofrer um decréscimo para que cada elemento do array seja comparado com a nossa chave. E por fim, se o valor for encontrado, esse é retornado para o main, caso contrário é retornado o -1.

E foi pessoal, espero que tenha sido proveitoso. Bons Estudos! :)

Resposta

#include

#define SIZE 10

int linearSearch( int b[],int key,int size); /* protótipo de função */

int main(void) /* Função main inicia a execução do programa */

{

int searchKey; /* valor para localizar no array*/

int element; /* Variável para manter no local de searchKey ou -1 */

int a[SIZE] = { 8, 3, 1, 2, 6, 0, 9, 7, 4, 5 }; /* Inicializa o a */

printf("Digite chave de pesquisa de inteiro:\n");

scanf("%d", &searchKey);

/* Tenta localizar searchKey no array a */

element = linearSearch(a, searchKey, SIZE);

/* Exibe resultados */

if(element != -1){

printf("Valor encontrado no elemento %d\n", element);

} /* Fim do if */

else{

printf("Valor não encontrado\n");

} /* Fim do else */

return 0; /* Indica conclusão bem-sucedida */

} /* Fim do main */

/* Função que realiza a pesquisa linear do array */

int linearSearch( int b[],int key,int size)

{

if(b[size] == key){

return size;

} /* Fim do if */

if(b[size]!= key && size >= 0){

int r = linearSearch( b, key, size - 1);

return r;

}

} /* Fim da função linearSearch */