Ir para conteúdo
Fórum Script Brasil

cassiogallotti

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que cassiogallotti postou

  1. Olá pessoal, queria saber se alguém poderia analizar meu código que está com problema na hora de retornar o valor da busca binária. É o seguinte, no programa entra com a matricula de 5 alunos e seus respectivos nomes. Depois ele coloca em ordem de matricula(só porque o enunciado pediu, mas é inútil), em seguida coloca em ordem alfabética. Depois entra com um nome, que será a chave para a busca, em seguida roda a busca binária para localizar o nome e tem que retornar o numero da matricula. É aí que está o problema, aparentemente não está comparando ou não está retornando. Desde já agradeço. O código: #include <cstdlib> #include <iostream> #define tamanho 5 #define nometamanho 30 using namespace std; struct tno { int matricula; char nome[nometamanho]; }; struct tfila { struct tno no[tamanho]; int topo; }; void iniciafila (struct tfila*fila) { fila->topo=0; } int ordenainsercao(struct tfila*fila, struct tno no[], int tam) { int j,i,aux; tno noaux; for (j=1; j<tam; j++){ aux=no[j].matricula; for (i=j-1; i>=0 && no[i].matricula > noaux.matricula; i--){ no[i+1]=no[i]; } no[i+1]=noaux; } } int ordenanome (struct tfila * fila , struct tno no[] , int tam) { int j,i; tno noaux; for (j=1; j<tam; j++){ noaux,no[j]; for (i=j-1; i>=0 && strcmp(no[i].nome,noaux.nome)>0; i--){ no[i+1]=no[i]; } no[i+1]=noaux; } } int buscabinaria (struct tfila* fila, struct tno no[], int tam, char chave[],int nometam ) { int e,m,d; e=0; d=tam-1; while (e<=d){ m=(e+d)/2; if (strcmp(no[m].nome,chave)==0){ return no[m].matricula; } if (strcmp(no[m].nome,chave)>0){ e=m+1; } else{ d=m-1; } return 0; } } int main(int argc, char *argv[]) { struct tfila fila; int c, retornopesquisa; struct tno no[tamanho]; char chave[nometamanho]; iniciafila(&fila); for (c=0; c<tamanho; c++){ cout<<"\n digite "<<c+1<<"o matricula: "; cin>>no[c].matricula; cout<<"\n digite "<<c+1<<"o nome: "; cin>>no[c].nome; } ordenainsercao(& fila , no, tamanho); ordenanome(& fila, no, tamanho); cout<<"\n digite nome para ser pesquisado \n "; cin>>chave; retornopesquisa=buscabinaria(& fila, no, tamanho, chave, nometamanho); if(retornopesquisa==0){ cout<<"\n nenhum nome ou matricula encontarada \n "; } else{ cout<<"nome encontrado a matricula referente a este nome e: \n "; cout<<retornopesquisa +1; } system("PAUSE"); }
×
×
  • Criar Novo...