Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
rafaelphy

ajuda com ponteiro

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Editado por dif
Use a tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×