Atividade : Algoritmo Busca para a primeira ocorrência.
QUESTÃO EM ANEXO
Soluções para a tarefa
Resposta:
Segue a listagem abaixo.
Explicação:
Vamos implementar o algoritmo para uma lista de números inteiros, em linguagem C.
As listas de 21, 42 e 63 números podem ser geradas manualmente ou em alguma página geradora de números aleatórios.
#include <stdio.h>
#include <stdlib.h>
int busca_primeiro(int* A, int n, int x) {
int sinal = 0;
int local = -1;
int j = 0;
while (A[j] != x && j < n) {
j = j + 1;
}
if (A[j] != x) {
sinal = 0;
} else {
sinal = 1;
local = j;
}
return sinal ? local+1: -1;
}
int main()
{
int A[] = {77, 64, 100, 95, 64, 44, 93, 86, 11, 44, 98, 96, 52, 52, 44, 41, 93, 46, 80, 37, 35};
int x = 41;
int local = busca_primeiro(A, 21, x);
if (local >= 0) {
printf("Local: %d\n", local);
} else {
printf("Valor %d nao encontrado.", x);
}
int A1[] = {7,46,72,28,57,57,32,75,16,31,90,23,83,35,18,1,39,59,15,38,67,7,96,30,53,97,14,70,77,34,83,17,11,22,28,2,98,9,35,100,26,17};
int x1 = 57;
int local1 = busca_primeiro(A1, 42, x1);
if (local1 >= 0) {
printf("Local: %d\n", local1);
} else {
printf("Valor %d nao encontrado.", x1);
}
int A2[] = {27,63,40,65,9,31,41,35,23,29,26,36,85,80,27,2,97,42,80,25,100,83,73,20,67,50,28,54,13,96,70,44,38,12,2,89,14,50,31,6,81,51,65,95,97,75,74,6,55,20,14,79,24,37,100,55,65,8,41,85,25,95,60};
int x2 = 89;
int local2 = busca_primeiro(A2, 63, x2);
if (local2 >= 0) {
printf("Local: %d\n", local2);
} else {
printf("Valor %d nao encontrado.", x2);
}
return 0;
}