Ir ao conteúdo

Erro Pesquisa Agenda


Gustavo Gaioski

Posts recomendados

Postado

Olá, sou novo no fórum e na programação. Bem, estou tendo problemas em um código de uma agenda, mais precisamente no sistema de busca. Gostaria de saber com posso resolver o problema. Segue o código:




#include <stdio.h>
#include <string.h>

#define limpar setbuf(stdin,NULL)


int i=0, j; //variaveis globais

void inserir();
void pesquisar();
void menu();





struct{
char nome [40];
char email [30];

//endereço
char rua [30];
char num [10];
char comple [10];
char bairro [30];
char cep [20];
char cidade [30];
char estado [30];
char pais [20];

char fone [15];
char data [10];
char obs [50];

}agenda[100];


//funcao para registrar
void inserir()
{
char rep;

system("cls"); //limpar tela
printf("\t\t | |\n");
printf("\t\t | 1- Inserir |\n");
printf("\t\t | |\n");

do
{
printf("\n Nome: ");
limpar;
gets(agenda[i].nome);

printf("\n E-mail: ");
limpar;
gets(agenda[i].email);

printf("\n Rua: ");
limpar;
gets(agenda[i].rua);

printf("\n Numero: ");
limpar;
gets(agenda[i].num);

printf("\n Complemento: ");
limpar;
gets(agenda[i].comple);

printf("\n Bairro: ");
limpar;
gets(agenda[i].bairro);

printf("\n CEP: ");
limpar;
gets(agenda[i].cep);

printf("\n Cidade: ");
limpar;
gets(agenda[i].cidade);

printf("\n Estado: ");
limpar;
gets(agenda[i].estado);

printf("\n Pais: ");
limpar;
gets(agenda[i].pais);

printf("\n Telefone: ");
limpar;
gets(agenda[i].fone);

printf("\nData de Nascimento: ");
limpar;
gets(agenda[i].data);

printf("\n Observacoes: ");
limpar;
gets(agenda[i].obs);

printf("\n Cadastro concluido!\n");
printf("\n Deseja continuar? (S ou N) \n");
scanf("%c",&rep);




}while(rep=='s' || rep=='S');

if (rep=='n' || rep=='n')
return menu();
}


//Função para fazer a pesquisa


void pesquisar()
{
char x[50], repetir;
system("cls");
printf("\t\t 2- Pesquisar \n");
printf("\n Nome que deseja pesquisar: ");
limpar;
scanf("%s",x);
for(j=0;j<i;j++)
{
if(strcmp(x,agenda[j].nome)==0)
{
printf("%s",agenda[j].nome);
printf("%s",agenda[j].email);
printf("%s",agenda[j].rua);
printf("%s",agenda[j].num);
printf("%s",agenda[j].comple);
printf("%s",agenda[j].bairro);
printf("%s",agenda[j].cep);
printf("%s",agenda[j].cidade);
printf("%s",agenda[j].estado);
printf("%s",agenda[j].pais);
printf("%s",agenda[j].fone);
printf("%s",agenda[j].data);
printf("%s",agenda[j].obs);
printf("Pesquisa Concluida"); getch();
}
}


printf("\n Deseja continuar? (S ou N) \n");
limpar;
scanf("%c",&repetir);
if (repetir=='s' || repetir=='S')
return menu();
}



//Função Menu
void menu()
{
int s;
do{
system("cls");
printf("\t\t |-------------------------------------|\n");
printf("\t\t | Selecione uma opcao: |\n");
printf("\t\t | |\n");
printf("\t\t | 1- Inserir |\n");
printf("\t\t | 2- Pesquisar |\n");
printf("\t\t | 3- Sair |\n");
printf("\t\t |-------------------------------------|\n");
printf("\t\t Opcao: ");
scanf("%i", &s);
switch(s)
{
case 1:
inserir();
break;
case 2:
pesquisar();
break;
case 3:
break;
}
getch();
}while(s!=3);
}




int main(){

int s;
system("cls");
printf("\t\t |--------------------------| \n");
printf("\t\t | Selecione uma opcao: | \n");
printf("\t\t | | \n");
printf("\t\t | 1- Inserir | \n");
printf("\t\t | 2- Pesquisar | \n");
printf("\t\t | 3- Sair | \n");
printf("\t\t |--------------------------| \n");
printf("\t\t Opcao: ");
scanf("%i", &s);
switch(s)
{
case 1:
inserir();
break;
case 2:
pesquisar();
break;
case 3:
break;
}
return 0;
}





Eu ja procurei bastante sobre isso, e percebi que muitas pessoas tem duvidas, mas não consegui achar uma resposta

Postado

Cara vou confessar que não foi fácil achar o problema. hehe. Faz tempo que não programo.

O problema está aqui(Linha 127):

for(j=0;j<i;j++)

Acontece que i é uma variável global que você inicia com o valor zero(Linha ):

int i=0, j; //variaveis globais

Ou seja o laço for nem chega a ser executado, pois j = 0 e i = 0, ou seja j não é menor que i, então j é incrementado e o laço for deixa de ser executado. Por isso a pesquisa não é feita.

O certo seria depois do usuário adicionar um contato, o valor de i ser incrementado, pois o programa fica sabendo quantos pessoas estão cadastrados na agenda pelo valor de i

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!