Ir ao conteúdo
  • Cadastre-se

jottinha852

Membro Júnior
  • Total de itens

    1
  • Cadastrado em

  • Última visita

  • Qualificações

    0%
  1. Boa noite! Iniciei a pouco tempo o curso de programação e resolvi fazer esse programa para fins acadêmicos, eu gostaria que esse programa não cadastrar-se ninguém se o ID do cliente já estiver em uso, porém o programa ignora meu loop e não identifica isso, alguém consegue me ajudar? Desde já agradeço. Gostaria de verificar a parte do - Lista *cadastro_novosclientes(Lista *novo). #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <conio.h> #include <stdbool.h> #include <string.h> #include <locale.h> typedef struct Lista { char pessoa[50]; char cpf[15]; int idade; unsigned long int iden; struct Lista *proximo; }Lista; //valores dos pratos float a = 25.00; float b = 15.00; float c = 65.80; float comprado = 0;//para atualizar o valor que o cliente deve //declaraçaõ de funções Lista* cadastro_novosclientes(Lista* novo); void imprima(Lista *novo); void prato(Lista *novo, int x); int main(void) { setlocale(LC_ALL, "Portuguese"); //ACRESCENTANDO A LINGUA PORTUGUESA NO PROGRAMA Lista *novo = NULL; // Ponteiro para percorrer aos dados mais tarde int x; //receber o ID do cliente que comprou char resposta; //verificar se é um novo cliente ou não //Garante que só saia dessa pagina se for dado o comando de finalização while(resposta != 'S') { printf(" _________________________________________\n"); printf("| MENU |\n"); printf("|_________________________________________|\n"); printf("|(N) NOVO CADASTRO |\n"); printf("|(P) JA CADASTRADO |\n"); printf("|(l) LISTAR CLIENTES |\n"); printf("|(S) FINALIZAR |\n"); printf("|_________________________________________|\n"); fflush(stdin); resposta = getch(); resposta = toupper(getch()); // para não ter problema caso a resposta seja em maiusculo ou não switch(resposta) //começando o processamento { case 'N': system("cls"); // limpar a tela printf("------------------------------------------\n"); printf(" CADASTRO \n"); printf("------------------------------------------\n"); novo= cadastro_novosclientes(novo); getch(); system("cls"); break; case 'P': printf("Qual o ID: "); scanf("%i", &x); fflush(stdin); prato(novo, x); getch(); system("cls"); break; case 'L': system("cls"); printf("------------------------------------------\n"); printf(" Clientes já cadastrados \n"); printf("------------------------------------------\n"); imprima(novo); getch(); system("cls"); break; default: //se for dado um caractere invalido não retornar nada system("cls"); } } } Lista *cadastro_novosclientes(Lista *novo) { Lista dados; Lista *p = novo; bool identificar = false; printf("Nome:"); fgets(dados.pessoa, 50, stdin); printf("Qual a idade: "); scanf("%i", &dados.idade); fflush(stdin); printf("Qual o CPF: "); fgets(dados.cpf, 15, stdin); printf("Qual a identificação: "); scanf("%u", &dados.iden); fflush(stdin); //verificar se meu número de identificação já existe for(p=novo; p!=NULL; p= p->proximo){ if(p->iden==dados.iden){ bool identificador= true; break; } } //salvando os novos dados if(!identificar) { Lista *novos_dados = (Lista*)malloc(sizeof(Lista)); strcpy(novos_dados -> pessoa, dados.pessoa); novos_dados -> idade = dados.idade; strcpy(novos_dados -> cpf, dados.cpf); novos_dados -> iden = dados.iden; novos_dados -> proximo = novo; printf("------------------------------------------\n"); printf(" Cadastro finalizado \n"); printf("------------------------------------------\n"); printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU\n"); return novos_dados; } else { printf("Número de identificação já cadastrado"); printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU\n"); return novo; } } void prato(Lista *novo, int x) { char n; //identificar o input do usuario Lista *p; for(p = novo; p != NULL; p -> proximo) { if(p -> iden == x) { printf("Qual prato %s comprou? A, B ou ", p -> pessoa); n = getch(); n = toupper(getch()); switch(n) { case 'A': comprado += a; printf("\n"); printf("%s tem que pagar %.2f\n", p -> pessoa, comprado); comprado = 0; break; case 'B': comprado += b; printf("\n"); printf("%s tem que pagar %.2f\n", p -> pessoa, comprado); comprado = 0; break; case 'C': comprado += c; printf("\n"); printf("%s tem que pagar %.2f\n", p -> pessoa, comprado); comprado = 0; break; } printf("\n\n PRESSIONE QUALQUER PLACA PARA VOLTAR AO MENU\n"); return; } } } void imprima(Lista *novo)//imprime os nomes ja cadastrados { Lista *p; for(p = novo; p != NULL; p = p -> proximo) { printf(" NOME: %s\n", p -> pessoa); printf(" ID: %i Idade: %u", p -> iden, p -> idade); printf(" CPF: %s\n", p -> cpf); printf("------------------------------------------\n"); } printf("\n\n PRESSIONE QUALQUER PLACA PARA VOLTAR AO MENU\n"); }

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

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!