Guest --guardiao -- Postado Setembro 8, 2008 Denunciar Share Postado Setembro 8, 2008 GALERA ME AJUDA.... não TOW CONSEGUINDO FAZER ELE BUSCAR A CHAVE.... O PROBLEMA TA NO ULTIMO IF ELSE....#include <stdio.h>#include <stdlib.h>int busca (int ch, int i, int d, int v[]){ int m; if (i==d)/* se ini==fim*/ return v[d]; // base da recursao else{ m= (i+d)/2; if (v[m]==ch) return v[m]; if(v[m]<ch) return busca (ch, m+1, d, v); else return busca (ch, i, m-1, v); }}/*LEGENDA: i-tamanho do vetor; ini -posicao minima onde o elemento procurado pode estar; fim - posicao maxima; chave- elemento procurado; vet- vetor onde a busca é feita; meio-media da posicao onde o elemento pode estar*/ /* Programa Principal*/int main (void){ int *vet, num, chave, i, ini, fim; printf("\n=========================================================="); printf("\nNumero de elementos:\n"); /* quantidade de elementos do =vetor*/ scanf("%d",&num); vet= (int*)malloc (sizeof(int)*num); /* alocando memória para o vetor*/ printf ("Digite apenas numeros inteiros positivos em ordem crescente:\n"); for (i=0;i<num; i++){ printf("Digite o %d numero:\n",i+1); scanf("%d",&vet); /* carregando o vetor de numeros*/ if (vet<0) printf ("\n erro:digite apenas numeros positivos crescente!\n"); } printf ("\n numero que deseja buscar no vetor\n"); scanf ("%d", &chave); if (chave==busca(chave, ini, fim-1, vet)) /*fim=num*/ printf("numero encontrado \n%d", chave); else{ printf ("\n numero não consta nesta sequencia!\n"); printf("\n==========================================================");}return EXIT_SUCCESS;} Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest --guardiao --
GALERA ME AJUDA.... não TOW CONSEGUINDO FAZER ELE BUSCAR A CHAVE.... O PROBLEMA TA NO ULTIMO IF ELSE....
#include <stdio.h>
#include <stdlib.h>
int busca (int ch, int i, int d, int v[]){
int m;
if (i==d)/* se ini==fim*/
return v[d]; // base da recursao
else{
m= (i+d)/2;
if (v[m]==ch)
return v[m];
if(v[m]<ch)
return busca (ch, m+1, d, v);
else
return busca (ch, i, m-1, v);
}
}
/*LEGENDA:
i-tamanho do vetor;
ini -posicao minima onde o elemento procurado pode estar;
fim - posicao maxima;
chave- elemento procurado;
vet- vetor onde a busca é feita;
meio-media da posicao onde o elemento pode estar*/
/* Programa Principal*/
int main (void){
int *vet, num, chave, i, ini, fim;
printf("\n==========================================================");
printf("\nNumero de elementos:\n"); /* quantidade de elementos do =vetor*/
scanf("%d",&num);
vet= (int*)malloc (sizeof(int)*num); /* alocando memória para o vetor*/
printf ("Digite apenas numeros inteiros positivos em ordem crescente:\n");
for (i=0;i<num; i++){
printf("Digite o %d numero:\n",i+1);
scanf("%d",&vet); /* carregando o vetor de numeros*/
if (vet<0)
printf ("\n erro:digite apenas numeros positivos crescente!\n");
}
printf ("\n numero que deseja buscar no vetor\n");
scanf ("%d", &chave);
if (chave==busca(chave, ini, fim-1, vet)) /*fim=num*/
printf("numero encontrado \n%d", chave);
else{
printf ("\n numero não consta nesta sequencia!\n");
printf("\n==========================================================");}
return EXIT_SUCCESS;
}
Link para o comentário
Compartilhar em outros sites
0 respostass 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.