Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal alguém pode me ajuda com a pesquisa binária
o programa não executa a pesquisa.
não faço e menor idéia em que errei.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <unistd.h>
#define cabecalho "---------------------------------------------------------------\nFATENE - Facudade tecnologica do ceara\n1o Analise e Desenvouvimento de Sistema\nAlunos: GILIARD & MAYARA\nProfessor: AMAURI-ADS-16\n-------------------------------------------------------\n"
typedef struct
{
char nome[30];
char rua [50];
char bairro [30];
char cidade [30];
char sigla_estado [15];
int numero;
int CEP[10];
}endereco;
void inserir(void);
void pesquisar(void);
void todos(void);
void menu(void);
endereco cadastro[2];
char repeat[2];
int cont=1;
void inserir(){
int i=0;
do{
printf("Digite o Nome\n");
getchar();
gets(cadastro[i].nome);
printf("Digite o rua\n");
getchar();
gets(cadastro[i].rua);
printf("Digite o numero da casa\n");
scanf("%d",&cadastro[i].numero);
printf("Digite o bairro\n");
getchar();
gets(cadastro[i].bairro);
printf("Digite o cidade\n");
getchar();
gets(cadastro[i].cidade);
printf("Digite o sigla_estado\n");
getchar();
gets(cadastro[i].sigla_estado);
printf("Digite o CEP\n");
scanf("%d",&cadastro[i].CEP);
printf("---------------------------------------------------------------\n");
printf("\nEndereço_%d",i+1);
printf("\nCadastro conclu%cdo com sucesso!\n");
printf("---------------------------------------------------------------\n");
printf("\nDeseja continuar?(s ou n) \n");
getchar();
gets(repeat);
cont=cont+i;
i++;
}while(strcmp(repeat,"s")==0 );
menu();
}
void pesquisar(){
int i,j,comeco,final,meio;
char aux[30];
char pesq[30];
char verdade[2]="f";
printf("\nDigite o nome a ser pesquisado\n");
getchar();
gets(pesq);
// ordenação
for (i = 0; i < cont - 1; i++){
for (j = i + 1; j <=cont; j++){
if ( strcmp(cadastro[i].nome,cadastro[j].nome) > 0){
strcpy(aux,cadastro[i].nome);
strcpy(cadastro[i].nome,cadastro[j].nome);
strcpy(cadastro[j].nome,aux);
}
}
}
//pesquisa binaria
comeco=0;
final=cont-1;
while(comeco <= final)
{
meio = (comeco+final)/ 2;
if(strcmp(pesq,cadastro[meio].nome)==0){
strcpy(verdade,"v");
}
else
{
if(strcmp(pesq,cadastro[meio].nome)< 0){
final = meio -1;
}
else{
comeco = meio+1;
}
}
}
if(strcmp(verdade,"v")==0){
printf("---------------------------------------------------------------\n");
printf("\nEndereço_%d\n",j+1);
printf("---------------------------------------------------------------\n");
printf("\nNome: %s",cadastro[ meio].nome);
printf("\nrua: %s",cadastro[ meio].rua);
printf("\ncasa: %d",cadastro[ meio].numero);
printf("\n bairro: %s",cadastro[ meio].bairro);
printf("\ncidade: %s",cadastro[ meio].cidade);
printf("\nestado: %s",cadastro[ meio].sigla_estado);
printf("\nCEP: %d\n",&cadastro[ meio].CEP);
}
printf("\nDeseja continuar? (S ou N) \n");
gets(repeat);
if (strcmp(repeat,"s")==0 );
menu();
}
void todos(){
int j;
for(j=0;j<cont;j++)
{
printf("---------------------------------------------------------------\n");
printf("\nEndereço_%d\n",j+1);
printf("---------------------------------------------------------------\n");
printf("\nNome: %s",cadastro[j].nome);
printf("\nrua: %s",cadastro[j].rua);
printf("\ncasa: %d",cadastro[j].numero);
printf("\n bairro: %s",cadastro[j].bairro);
printf("\ncidade: %s",cadastro[j].cidade);
printf("\nestado: %s",cadastro[j].sigla_estado);
printf("\nCEP: %d\n",&cadastro[j].CEP);
}
printf("\nDeseja continuar? (S ou N) \n");
gets(repeat);
if (strcmp(repeat,"s")==0 );
menu();
}
void menu(){
int x;
do{
printf("---------------------------MENU---------------------------------------\n\n\n");
printf(" Agenda Eletronica\n");
printf(" Menu Principal\n\n");
printf( " |-----------------------|\n");
printf( " | 1. Inserir Contato | \n");
printf( " | 2. Listar os Contatos | \n");
printf(" | 3. Pesquisa Contato | \n");
printf( " | 4. Exlcuir Contato | \n");
printf(" | 0. Sair | \n");
printf(" |_____________________ _|\n\n");
printf( "O QUE você QUE FAZER\n\n: ");
scanf("%d",&x);
switch(x)
{
case 1:
inserir();
break;
case 2:
todos();
break;
case 3:
pesquisar();
break;
}
}while(x!=2);
getch();
}
int main() puts (cabecalho);
menu();
}Carregando comentários...