Thaigo 0 Denunciar post Postado Maio 17, 2010 Esto precisando entende a logica desse programa pra mim entende melhor seria melhor entende-la primeiro em visualg alguem sabe converte para visualg... essa pesquisa binaria? #include <stdio.h> #include <stdlib.h> int buscabinaria(int a[], int n, int x) {int inicio = 0, final = n-1, meio; // procura enquanto a tabela tem elementos while (inicio <= final) {printf("\ninicio = %3d final = %3d", inicio, final); meio = (inicio + final) / 2; if (a[meio] == x) return meio; if (a[meio] > x) final = meio -1; // busca na parte de cima else inicio = meio + 1; // busca na parte de baixo } // foi até o final e não encontrou return -1; } void geravet(int v[], int k) // gera vetor em ordem crescente com k elementos usando rand() {int i; srand(9999);v[0] = rand()%100; for (i = 1; i < k; i++) v[i] = v[i-1] + rand()%100; } void impvet(int v[], int k) // imprime vetor com k elementos {int i; for (i = 0; i < k; i++) printf("%6d", v[i]); } int main() {int vet[1000], n, kk, x; // ler n printf("entre com n:"); scanf("%d", &n); // gera o vetor e imprime geravet(vet, n); impvet(vet, n); // ler vários números até encontrar um negativo e procurar no vetor printf("\nentre com o valor a ser procurado:"); scanf("%d", &x); while (x >= 0) {if ((kk = buscabinaria(vet, n, x)) >= 0) printf("\n*** encontrado na posicao %3d", kk); else printf("\n*** nao encontrado"); printf("\nentre com o valor a ser procurado:"); scanf("%d", &x); } } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 18, 2010 Entender? o programa ta td comentado, oq você n esta entendendo?? Jogar um monte de linha de código sem identação é facil. tente fazer algo poste seus avanços q te orientamos! []s Compartilhar este post Link para o post Compartilhar em outros sites
Thaigo 0 Denunciar post Postado Maio 18, 2010 var buscabinaria :inteiro a: vetor [1..500] de inteiro n:inteiro x,comeco,final,meio:inteiro inicio comeco<-0 final<- n-1 ate(comeco <= final) escreval("inicio:",comeco) escreval("final:",final) meio<- (comeco+final)/2 se (a[meio]=x) //return// meio se (a[meio]>x) entao final=meio-1 //busca para cima senao comeco=meio+1 //busca para baixo //foi e o final e nao encontrou return -1 ??? Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Maio 18, 2010 deve ser fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
Thaigo 0 Denunciar post Postado Maio 19, 2010 Tem um monte de erro de semantica e sintaxe esse algoritmo parece começar de tras para frente var buscabinaria :inteiro numero: vetor [1..500] de inteiro n:inteiro x,comeco,final,meio:inteiro i,k:inteiro kk:inteiro inicio comeco<-0 final<- n-1 ate(comeco <= final) escreval("inicio:",comeco) escreval("final:",final) meio<- (comeco+final)/2 se (a[meio]=x) //return// meio se (a[meio]>x) entao final<-meio-1 //busca para cima senao comeco<-meio+1 //busca para baixo //foi e o final e nao encontrou fimse fimse fimalgoritmo inicio i<-0 enquanto i < 500 faca numero<-numero[i-1]+rand%100 fimenquanto enquanto i < 500 faca escreval(numero) fimenquanto escreval("entre com n:") leia(n) // gera o vetor e imprime geravet(vet, n); impvet(vet, n); escreval("entre com valor a ser procurado:") leia(x) ate(x>=0) se ((kk = buscabinaria(vetor, n, x)) >=0)) entao escreval("numero encontrado na pociçao:",kk) senao escreval("nao encontrado") escreval("entre com o valor a ser procurado:") leia(x) fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites