Ir ao conteúdo
  • Cadastre-se

ajuda com ponteiro


rafaelphy

Posts recomendados

Olá amigos, fiz este código para gerar números aleatórios, depois ordena-los por inserção e por fim poder pesquisar a existência de um valor entre os valores escritos,porém a ultima parte não esta funcionando, creio que seja um problema com ponteiros, mas posso estar enganado,como não consegui descobrir o erro peço a ajuda de vocês.

Este programa tb esta com um bug ao final da listagem de elementos, pois aparece um numero que nao tem nada a ver com a lista de elemenos.

fico grato se puderem me ajudar a resolver os problemas.

Abraço

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>

int buscaBinaria ( int n, int Elemento[n], int procura)
{
int inf = 0; //Limite inferior (o primeiro elemento do vetor em C é zero )
int sup = n-1; //Limite superior (termina em um número a menos 0 à 9 são 10 numeros )
int meio;
while (inf <= sup)
{
meio = inf + (sup-inf)/2;
if (procura == Elemento[meio])
return meio;
else if (procura < Elemento[meio])
sup = meio-1;
else
inf = meio+1;
}
return printf("\n Elemento nao encontrado\n"); // não encontrado
}

int buscaSequencial(int n, int Elemento[n],int procura)
{
int t;
for(t=0;t<=n;t++)
{
if(Elemento[t]==procura){
printf("\n O elemento procurado foi encontrado e este elemento e\':%d\n", Elemento[t]);
}

}

}


int main(int argc, char *argv[])
{
int n;
{
//introdução dos valores a serem ordenados.

printf("\nEntre com o numero de elementos que deseja inserir\n");
scanf("%d", &n);
printf("\n Serao inseridos %d elementos. \n", n);

int Elemento[n], i, a, c, procura, busca;

for (i = 0; i < n; i ++)
{
Elemento[i] = rand() % 1000;
}

// implementação da ordenação do tipo Inserção.

for(a=1; a<n; a++){
int temp = Elemento[a];
int b = a-1;
while (Elemento[b]>temp && b>0){
Elemento[b+1] = Elemento [b];
b=b-1;
}
Elemento[b+1]=temp;
}

// Mostrar elementos ordenados.
printf("\n Os elementos ordenados sao:\n");
for(c=1; c<=n; c++){
printf("\n %d \n", Elemento[c]);
}

printf("\nEntre com o elemento que deseja pesquisar.\n");
scanf("%d", &procura);
busca = buscaBinaria(n, Elemento, procura);
printf("\n%d\n", busca);

system("PAUSE");
return 0;
}
}

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...

Bom dia, tem vários erros, você pode passar apenas Elemento[] para a função não precisa, no n, que ele ira reconhecer quantas posições existem.

no if existem erro de sintaxe tambem seria


if () {

} else if () {

}

ERRADO:


if (procura == Elemento[meio])
return meio;
else if (procura < Elemento[meio])
sup = meio-1;
else
inf = meio+1;
}

CERTO


if (procura == Elemento[meio]) {
return meio;
} else if (procura < Elemento[meio]) {
sup = meio-1;
} else {
inf = meio+1;
}

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...