jurassico 0 Denunciar post Postado Outubro 21, 2015 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> struct Pessoa { char nome[50],endereco[50]; int cpf; }; struct Pesquisa { char nome[50],endereco[50],enderecopesquisa[50]; int cpf,i,cpfpesquisa; }; int main () { int op; printf ("Informe uma opcao1: caixa=11 estoque=22 cadastro de clientes=66 \n"); scanf ("%d", &op); switch (op){ case 66:{ struct Pessoa pessoa; printf ("informe nome: \n"); scanf ("%s", pessoa.nome); printf ("informe CPF: \n" ); scanf ("%d", &pessoa.cpf); printf ("informe endereco: \n"); scanf ("%s", pessoa.endereco); printf ("nome: %s\n", pessoa.nome); printf ("endereco: %s\n", pessoa.endereco); printf ("CPF: %d\n", pessoa.cpf); break; } } system ("pause"); } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 21, 2015 A princípio, não há necessidade de agrupar as informações de pesquisa numa struct.P/ se ter uma base de dados em memória você precisa declarar uma variável que contenha vários objetos do tipo struct Pessoa. Percorra com um for.Pode começar com isso (não testei porque não tenho máquina agora): #include <stdio.h> #include <string.h> #define MAX_NOME 50 #define MAX_ENDERECO 50 #define MAX_CPF 11 #define MAX_REGISTROS 5 const char * operacoes[] = {"Cadastrar clientes", "Pesquisar cliente (nome E cpf)", "Sair"}; struct Pessoa { char nome[MAX_NOME]; char endereco[MAX_ENDERECO]; char cpf[MAX_CPF]; }; struct Pessoa base[MAX_REGISTROS]; int tam_base = 0; void cadastrar_cliente () { if (tam_base == MAX_REGISTROS) return; scanf("%50s%*c", base[tam_base].nome); scanf("%50s%*c", base[tam_base].endereco); scanf("%11s%*c", base[tam_base].cpf); tam_base++; } const struct Pessoa * pesquisar_CPF(const char * cpf) { int i; for(i=0; i<tam_base && strcmp(base[i].cpf, cpf); i++); return (i >= tam_base)? NULL : (const struct Pessoa *) &base[i]; } const struct Pessoa * pesquisar_Nome(const char * nome) { int i; for(i=0; i<tam_base && strcoll(base[i].nome, nome); i++); return (i >= tam_base)? NULL : (const struct Pessoa *) &base[i]; } const struct Pessoa * pesquisar_NomeCPF() { char nome[MAX_NOME], cpf[MAX_CPF]; scanf("%50s%*c", nome); scanf("%11s%*c", cpf); const struct Pessoa * r1 = pesquisar_CPF((const char *)cpf); const struct Pessoa * r2 = pesquisar_Nome((const char*)nome); if (strcmp(r1->cpf, r2->cpf) == 0) return r1; return NULL; } int main (void) { int operacao = -1; while(operacao < 0 && operacao > 1) { // Exibe o menu. for(int i=0; i<2; i++) { printf("%d - %s\n", i, operacoes[i]); } scanf("%d", &operacao); if (operacao == 2) break; switch (operacao) { case 0: cadastrar_cliente(); break; case 1: const struct Pessoa * result = pesquisar_NomeCPF(); if (result) { printf("Nome:%s\t CPF:%s\n", result->nome, result->cpf); } else { puts("Pessoa não encontrada."); } break; default: puts("Operação inválida"); } } return 0; } Obs.: fechei o tópico p/ não virar bate-boca. Quando for postar a mesma coisa, peça p/ reabrir. Compartilhar este post Link para o post Compartilhar em outros sites
jurassico 0 Denunciar post Postado Outubro 21, 2015 nao tem como vc fazer esse parte de pesquida dentro daquele codigo q coloquei aí e ir falando oq faz em cada linha/? nao queria muda-lo... Compartilhar este post Link para o post Compartilhar em outros sites