Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leonardo Stifler

[Resolvido] Busca binaria em vetores

Recommended Posts

Estou com o seguinte problema para resolver,tenho que preencher um vetor com 5 numero fornecidos pelo usuario,depois tenho que fazer uma busca binaria retornando a posição,até ai ta tudo certo.o que nao estou conseguindo fazer é a condição caso o numero nao esteja dentro do vetor para retornar o valor nao foi encontrado.

Se puderem me add no msn:stifler.leo@hotmail.com

 

Desde ja agradeço

#include <stdio.h>
#include <stdlib.h>

int main()
{
float  vet[5],ax,x;
int i,meio;
int inicio = 0;
int fim = 5;
   for(i=0;i<5;i++)
   {
   printf("\nInforme um valor para a posicao %d:",i);
   scanf("%f",&vet[i]);
   }
        printf("\nDigite o valor que deseja buscar:");
        scanf("%f",&x);
        while (inicio<=fim)
        {
               meio=(inicio+fim)/2;
               if(x==vet[i])
               {
               printf("\nO valor esta na posicao: %d\n",meio);
        }
        for(i=0;i<5;i++)
        {
        if(x==vet[i])
        {
                     inicio=(fim+1);
                     printf("\nO valor esta na posicao: %d\n",i);
        }       
              else if(x<vet[i])
               {
                   fim=meio-1;
               }
               else
               {
                   inicio=fim+1;
               }
               }
        if (fim==inicio)
               printf ("O Valor nao foi encontrado\n");
}
     system ("pause");
     return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz as modificacoes e parace que o resultado deu certo!

#include <stdio.h>
#include <stdlib.h>

int main()
{
   float  vet[5], ax, x;
   int i, meio;
   int inicio = 0;
   int fim = 5;
   for(i = 0; i < 5; i++)
   {
       printf("\nInforme um valor para a posicao %d:",i);
       scanf("%f",&vet[i]);
   }
   printf("\nDigite o valor que deseja buscar:");
   scanf("%f", &x);
   while (inicio <= fim)
   {
       meio = (inicio + fim)/2;
       if(x == vet[meio]) //modificacao
       {
           printf("\nO valor esta na posicao: %d\n", meio);
       }
       for(i = 0; i < 5; i++)
        {
           if(x == vet[i])
           {
               inicio = (fim + 1);
               //essa condicao é para sair do while
               printf("\nO valor esta na posicao: %d\n", i);
           }
           else if(x < vet[i])
           {
               fim = meio-1;
           }
           else
           {
               inicio = meio + 1; // Modificacao
           }
       }
       if (fim == inicio)
           printf ("O Valor nao foi encontrado\n");
   }
   system ("pause");
   return 0;
}

 

//Metodo da bisseçao

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.