Ir para conteúdo
Fórum Script Brasil
  • 0

Busca Binária E Impressão


joaoponeis

Pergunta

ola!!!!!!

Estou no 3° período de tecnologia em informática na universidade tuiuti do paraná e tenho um trabalho pra apresentar no dia 13 de junho e so falta implementar uma busca binária em um vetor mas na chamada da função não consigo imprimir o que quero alguém pode me ajudar com isso????????

o codigo fonte e esse:

so falta o case 4 pra implementar e não consigo fazer funcionar alguém me ajuda!!!!!!

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

//----------------------------------------------------------------

#define Tam_Max 5

/*---------------------DECLARAR ITEM DA LISTA-------------------*/

typedef struct{

int cod;

int tel;

char nome [20];

char end [50];

}Titem;

/*---------------------DECLARAR LISTA---------------------------*/

typedef struct{

int ini;

int fim;

Titem dados [Tam_Max];

}Tlista;

/*---------------------INICIA A LISTA---------------------------*/

void iniciolista (Tlista *i){

i->ini=0;

i->fim=0;

}

/*---------------------VERIFICAR SE A LISTA ESTA VAZIA----------*/

bool listavazia (Tlista *v){

if (v->ini==v->fim)

return true;

else

return false;

}

/*---------------------INSERIR ITEM NA LISTA--------------------*/

bool insere_lista(Tlista *lista,Titem x)

{

if(lista -> fim < Tam_Max)

{

lista -> dados[lista -> fim] = x;

lista -> fim ++;

return true ;

}

else

return false;

}

/*---------------------REMOVER ITEM DA LISTA-------------------*/

bool remove_lista (Tlista *lista,Titem *x,unsigned int posicao)

{

if(( posicao > Tam_Max)||( posicao > lista ->fim))

return false;

else

{

*x = lista -> dados[posicao];

lista -> fim --;

for(int i = posicao;i <= lista -> fim;i++)

{

lista -> dados = lista -> dados[i+1];

}

return true;

}

}

/*---------------------IMPRIMIR LISTA---------------------------*/

void imprime_lista(Tlista *l)

{

int aux;

for (aux =l->ini;aux< l->fim; aux++)

{

printf ("posicao: %d \n",aux);

printf ("codigo: %d \n",l->dados[aux].cod);

printf ("nome: %s \n",l->dados[aux].nome);

printf ("endereco: %s \n",l->dados[aux].end);

printf ("telefone: %d \n\n",l->dados[aux].tel);

}

}

//---------------------------------------------------------------

int Busca_Binaria(Tlista *L, int x, int meio)

{

int inf, sup;

meio = 0;

inf = L->ini;

sup = L->fim-1;

while (inf <= sup){

meio = (inf + sup)/2;

if(x > L->dados[meio].cod)

inf = meio + 1;

else

if(x < L->dados[meio].cod)

sup = meio - 1;

else

return meio;

}

return -1;

}

/*---------------------EXECUCAO----------------------------------*/

void main()

{

Tlista l,ll;

Titem itm;

int menu,x,aux,meio ;

aux=1;

iniciolista(&l);

do {

system ("cls");

printf("digite a opcao:\n");

printf("1-cadastro lista.\n");

printf("2-remove lista.\n");

printf("3-imprime na lista.\n");

printf("0-para sair.\n");

scanf("%d",&menu);

switch (menu)

{

case 1 : printf("digite nome:");

fflush(stdin);

scanf("%[^\n]s",itm.nome);

printf("digite endereco:");

fflush(stdin);

scanf("%[^\n]s",&itm.end);

printf("digite tel:");

scanf("%d",&itm.tel);

itm.cod = aux;

aux ++;

if (insere_lista(&l,itm))

{

printf("\nelemento inserido com sucesso! \n");

imprime_lista(&l);

}

else

printf("\nnão foi possivel inserir \n");

system("pause");

break;

case 2 :if (listavazia(&l))

{

printf("não E POSSIVEL REMOVER, LISTA VAZIA!");

system ("pause");

}

else

{

printf("digite a posicao do elemento a remover:\n");

imprime_lista(&l);

scanf("%d",&x);

if(remove_lista(&l,&itm,x))

printf("O cadastro de %s foi removido \n",itm.nome);

else

printf("não foi possivel remover \n");

system ("pause");

}

break;

case 3 : imprime_lista(&l);

system ("pause");

break;

case 4:printf("digite a codigo :\n");

imprime_lista(&l);

scanf("%d",&x);

}

}

while (menu != 0);

}

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Mas, onde você está usando a busca binária no código?

Abraços,

Graymalkin

essa é a parte do codigo que os prof. falaram que e uma busca binaria

int Busca_Binaria(Tlista *L, int x, int meio)

{

int inf, sup;

meio = 0;

inf = L->ini;

sup = L->fim-1;

while (inf <= sup){

meio = (inf + sup)/2;

if(x > L->dados[meio].cod)

inf = meio + 1;

else

if(x < L->dados[meio].cod)

sup = meio - 1;

else

return meio;

}

return -1;

}

Link para o comentário
Compartilhar em outros sites

  • 0
Sim, eu sei que é esta parte. Mas você não usou a função Busca_Binaria() em lugar algum do código. Foi sobre isto que questionei.

Abraços,

Graymalkin

sim eu tenho que implementar no case 4 mas quando eu chamo a busca_binaria() ele da um erro e sai da execução e não sei o que tenho que fazer!!!!!!!!

e gostaria de saber como tenho que implementar no case 4!!!!!!!!!

Editado por joaoponeis
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...