Ir para conteúdo

Arquivado

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

Thaigo

Converter ( c ) para visualg

Recommended Posts

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

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

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

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

×

Informação importante

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