Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

Converter ( c ) para visualg

  • Por favor, faça o login para responder
4 respostas neste tópico

#1 Thaigo

Thaigo
  • Membros
  • 3 posts

Postado 17 maio 2010 - 17:53

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);
}
}

Editado por quitZAUMMM, 18 maio 2010 - 11:48 .
Inclusão da tag [code]

  • 0

#2 quitZAUMMM

quitZAUMMM

    YES, WE CAN

  • Moderadores
  • 3.923 posts

Postado 18 maio 2010 - 11:49

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
  • 0

#3 Thaigo

Thaigo
  • Membros
  • 3 posts

Postado 18 maio 2010 - 14:28

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 ???
  • 0

#4 falcao544

falcao544
  • Membros
  • 761 posts

Postado 18 maio 2010 - 20:15

deve ser fimalgoritmo
  • 0

#5 Thaigo

Thaigo
  • Membros
  • 3 posts

Postado 19 maio 2010 - 14:36

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[i]<-numero[i-1]+rand%100
fimenquanto
enquanto i < 500 faca
escreval(numero[i])
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
  • 0




Publicidade

/ins>