Ir ao conteúdo
  • Cadastre-se

japrendiz

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

0
  1. @arfnetoagradeço muito a atenção que tem dado às minhas dúvidas. Estou tentando fazer um exercicio que pede para que o usuario tenha uma opção de inserir os dados na agenda e com outra opção mostrar esses dados.(Inclui uma descrição do que quero que faça na opção 1 e na opção 2 no codigo) Precisa que o sistema gere um codigo unico para cada contato e imprima o código quando mostrar os dados. Estou usando um livro com base no livro do Campos Ascencio. Todos os exercícios parecidos no livro tem essa lógica de digitar, ler e imprimir usando o fflush pra limpar o buffer do teclado. Alterei algumas coisas no código: inclui o typedef (mas não sei se usei corretamente);defini uma constante max 5 pra aprender a usar constante para facilitar manutenção futura do código (apesar desse exercicio ser bem simples); inclui a função rand pra gerar os códigos. Está gerando, mas não imprime, como não imprime nenhum dado da agenda e tbem não funciona a mensagem de agenda lotada quando passa de 5 contatos. E não sei o que fiz de errado que o sistema não ta mais aceitando escrever palavras na opção 1. Só aceita um caractere. #include<stdio.h> #include<stdlib.h> #include<string.h> #include<locale.h> #define max 5 typedef struct contatos { char nome [50], telefone [40], email [40]; }agenda; int main () { setlocale(LC_ALL, "Portuguese"); agenda dados [max]; int op, cont; cont =0; do { printf ("\nDigite 1 para cadastrar novo cliente; \nDigite 2 para visualizar clientes cadastrados; \nDigite 0 para encerrar:\n"); scanf ("%d", &op); fflush (stdin); switch (op) { /*se digitar 0 encerra a aplicação*/ case 0: system ("cls"); printf ("APLICAÇÃO ENCERRADA!\n"); break; case 1: /*se digitar 1 cadastra os contatos da agenda e gera um código*/ if (cont<max){ system ("cls"); for (cont=0; cont<max; cont++); printf ("Código: %d\n", rand()%5); /*inclui essa função rand pra gerar codigo, mas como imprimir esse codigo gerado?*/ printf ("Digite o nome:"); /*se digito letras da erro. só permite digitar um caractere ???*/ fgets (dados[cont].nome, 50, stdin); fflush (stdin); printf ("Digite o telefone:"); fgets (dados[cont].telefone, 40, stdin); fflush (stdin); printf ("Digite o e-mail:"); fgets (dados[cont].email, 40, stdin); fflush (stdin); printf("\n"); cont++; system ("pause"); } else printf ("*****AGENDA LOTADA!*****\n"); /*não está funcionando com a condição if con< max*/ break; case 2: /*se digitar 2 exibe os cadastros efetuados inclusive o codigo gerado e caso não tenha cadastrado nada mostra a mensagem de agenda vazia e se tiver cadastrado os 5 mostra mensagem agenda lotada*/ system ("cls"); if (cont<1) { {printf ("*****AGENDA VAZIA!*****\n");} fflush (stdin); system ("pause"); } else { for (cont=0; cont<max; cont++); printf ("\nNome: %s", dados[cont].nome); printf ("\nTelefone: %s", dados[cont].telefone); printf ("\nE-mail: %s", dados[cont].email); printf ("\n______________________________________"); printf ("\n"); } break; default: printf ("*****ERRO: OPÇÃO INVÁLIDA!******"); } } while (op!=0); return(0); }
  2. Estou começando a aprender logica e programação e não estou conseguindo criar uma lista de no maximo 5 clientes. Criei um menu usando o switch case. A opção 0 funciona encerrando o programa, a opção 1 também aparentemente funciona. (pelo menos eu consigo inserir os dados, mas não sei se ta salvando corretamente) O problema é a opção 2 que é para imprimir os clientes cadastrados incluindo o código gerado. Não ta imprimindo os clientes!! e o código continua aumentando a partir do 5. Quero que imprima o codigo e não que continue gerando. Imagino que seja algum erro básico, mas não to achando. Segue o meu código e a tela de execução da opção 2 após cadastrar 2 clientes #include<stdio.h> #include<stdlib.h> #include<string.h> #include<locale.h> struct agenda { char nome [40], telefone [20], email [30]; }; int main () { setlocale(LC_ALL, "Portuguese"); struct agenda dados [5]; int i, op, cont; do { printf ("\nDigite 1 para cadastrar novo cliente; \nDigite 2 para visualizar clientes; \nDigite 0 para encerrar:\n"); scanf ("%d", &op); fflush (stdin); switch (op) { case 0: system ("cls"); printf ("Aplicação encerrada!\n"); break; case 1: if (cont<=5){ system ("cls"); printf ("Código: %d\n", cont); printf ("Digite o nome:"); fgets (dados[cont].nome, 40, stdin); fflush (stdin); printf ("Digite o telefone:"); fgets (dados[cont].telefone, 20, stdin); fflush (stdin); printf ("Digite o e-mail:"); fgets (dados[cont].email, 30, stdin); fflush (stdin); printf("\n"); cont++; } else printf ("*****AGENDA LOTADA!*****\n"); break; case 2: system ("cls"); if (cont==1) { {printf ("*****AGENDA VAZIA!*****\n");} fflush (stdin); } else { for (i=1; i<=5; i++); printf ("Código: %d\n", i); printf ("\nNome: %s", dados.nome); printf ("\nTelefone: %s", dados.telefone); printf ("\nE-mail: %s", dados.email); printf ("\n______________________________________"); printf ("\n"); } break; default: printf ("Erro: opção inválida!"); } } while (op!=0); return(0); } ================================ EXECUÇÃO DA OPÇÃO 2: só mostra o ultimo cadastrado e não imprime os dados ============================== Código: 6 Nome: Telefone: E-mail: ______________________________________ Digite 1 para cadastrar novo cliente; Digite 2 para visualizar clientes; Digite 0 para encerrar:

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