Estou utilizando este código para uma busca binária, porem ao compilar, não me retorna a resposta desejada, não encontrei o erro, poderiam me dar um help? Muito obrigada.
#include<iostream> // p. usar cout cin
#include<new> // p. alocação de memória
#include<string> // trabalhar com textos
#include<stdlib.h> // implementa funções p. diversas operaões
#include<locale.h>
#define TAM 10
int buscaBinaria(int vetor[TAM], int valorProcurado, int *posicaoEncontrada){
int esquerda = 0; // limite da esquerda
int direita = TAM -1; // limite da direita
int meio; // O meio onde fica o cursor
while(esquerda <= direita){
meio = (esquerda + direita)/2;
//Quando o valor do meio é encontrado:
if(valorProcurado == vetor[meio]){
*posicaoEncontrada = meio;
return 1;
}else if(valorProcurado < vetor[meio]){
esquerda = meio -1;
}else{
direita = meio +1;
}
}
return -1;
}
int main(){
setlocale(LC_ALL, "");
int vetor[TAM] = {1, 29, 93, 75, 39, 03, 49, 90, 23, 20};
int valorProcurado;
int posicao, posicaoEncontrada;
//Auxiliar contador
int cont;
//Imprime o vetor na tela:
imprimeVetor(vetor);
cout << "Qual número deseja encontrar?";
cin >> valorProcurado;
if(buscaBinaria(vetor, valorProcurado, &posicaoEncontrada) == 1){
cout << "O valor foi encontrado na posição:" << posicaoEncontrada;
}else{
cout << "O valor não foi encontado.";
}
Pergunta
Barbaraa
Boa tarde pessoal,
Estou utilizando este código para uma busca binária, porem ao compilar, não me retorna a resposta desejada, não encontrei o erro, poderiam me dar um help? Muito obrigada.
#include<iostream> // p. usar cout cin
#include<new> // p. alocação de memória
#include<string> // trabalhar com textos
#include<stdlib.h> // implementa funções p. diversas operaões
#include<locale.h>
#define TAM 10
using namespace std; // p. utilisar cout cin
void imprimeVetor(int vetor[TAM]){
int cont; // auxiliar contador
//Imprime o vetor:
for (cont = 0; cont < TAM; cont ++){
cout << vetor[cont] << " - ";
}
}
int buscaBinaria(int vetor[TAM], int valorProcurado, int *posicaoEncontrada){
int esquerda = 0; // limite da esquerda
int direita = TAM -1; // limite da direita
int meio; // O meio onde fica o cursor
while(esquerda <= direita){
meio = (esquerda + direita)/2;
//Quando o valor do meio é encontrado:
if(valorProcurado == vetor[meio]){
*posicaoEncontrada = meio;
return 1;
}else if(valorProcurado < vetor[meio]){
esquerda = meio -1;
}else{
direita = meio +1;
}
}
return -1;
}
int main(){
setlocale(LC_ALL, "");
int vetor[TAM] = {1, 29, 93, 75, 39, 03, 49, 90, 23, 20};
int valorProcurado;
int posicao, posicaoEncontrada;
//Auxiliar contador
int cont;
//Imprime o vetor na tela:
imprimeVetor(vetor);
cout << "Qual número deseja encontrar?";
cin >> valorProcurado;
if(buscaBinaria(vetor, valorProcurado, &posicaoEncontrada) == 1){
cout << "O valor foi encontrado na posição:" << posicaoEncontrada;
}else{
cout << "O valor não foi encontado.";
}
return 0;
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.