Advertisement
Guest User

Exercício 45 - Resolvido 100%

a guest
Aug 23rd, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.50 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include <time.h>
  4. #include <string.h>
  5.  struct Data{
  6.     char mes[10];
  7.     char dia[10];
  8.     char ano[10];
  9.  };
  10. struct Cliente {
  11.     char nome[200];
  12.     char cpf[100]; 
  13.     char rg[100];
  14.     char numeroConta [100];
  15.     float saldo[100];
  16.     struct Data data;
  17. };
  18.  
  19. int isNumeric (const char* str)
  20. {
  21.     char *stop = 0;
  22.     strtoul (str, &stop, 10);
  23.     return (stop - str == strlen (str));
  24. }
  25.  
  26. /* funcao para validar cpf inserido nao precisa entender ja que ela nao liga, mas
  27.  e simples de entender ai so expressao mesmo.
  28.  */
  29.  validaCpf(char cpf[11]){
  30.     int sm, i, r, num;
  31.     int status;
  32.   char dig10, dig11;
  33.  
  34.   sm = 0;
  35.   for (i=0; i<9; i++) {
  36.     num = cpf[i] - 48;
  37.        
  38.     sm = sm + (num * (10 - i));  
  39.   }
  40.   r = 11 - (sm % 11);
  41.   if ((r == 10) || (r == 11))
  42.      dig10 = '0';
  43.   else
  44.      dig10 = r + 48;
  45.   sm = 0;
  46.   for (i=0; i<10; i++) {
  47.     num = cpf[i] - 48;
  48.     sm = sm + (num * (11 - i));
  49.   }
  50.   r = 11 - (sm % 11);  
  51.   if ((r == 10) || (r == 11))
  52.      dig11 = '0';
  53.   else
  54.      dig11 = r + 48;
  55.   if ((dig10 == cpf[9]) && (dig11 == cpf[10])){
  56.       printf("\nO CPF informado foi validado e salvo com sucesso .\n");
  57.     status = 0;
  58.   } else{
  59.      printf("\nO CPF informado e invalido, informe um correto.\n");
  60.      status = 1;
  61.   }
  62.      return  status;
  63. }
  64.  
  65.   criarConta (struct Cliente cliente[15] )
  66.    
  67. {
  68.  
  69.     char cond ='N';
  70.     char status;
  71.     int cont =0;
  72.     int tipo, i;
  73.     status =0;
  74. cadCli:
  75.         for(i=0;i<15;i++ )
  76.     {
  77.        
  78.     printf("Informe o nome do cliente\n%d",i);
  79.             scanf("\n%[^\n]s",cliente[i].nome);
  80.             fflush(stdin);
  81.     againCpf:   printf("Informe o cpf do cliente \n");
  82.     tipo =  scanf("%s", &cliente[i].cpf);
  83.             fflush(stdin);
  84.             status =  validaCpf(cliente[i].cpf);
  85.        if(status==1)
  86.        {
  87.             fprintf (stderr, "Por favor, entre com  CPF válido.\n");
  88.             goto againCpf;
  89.         }
  90.     againRg:    printf("Informe o rg do cliente  %c\n");
  91.             scanf("%s", &cliente[i].rg);
  92.             fflush(stdin);
  93.                  if (!isNumeric (cliente[i].rg))
  94.         {
  95.             fprintf (stderr, "Por favor, entre com um valor numérico.\n");
  96.             goto againRg;
  97.         }
  98.     againConta: printf("Informe o numero da conta do cliente  %c\n");
  99.             scanf("%s", &cliente[i].numeroConta);
  100.             fflush(stdin);
  101.                  if (!isNumeric (cliente[i].numeroConta))
  102.         {
  103.             fprintf (stderr, "Por favor, numero conta valido.\n");
  104.             goto againConta;
  105.         }  
  106.     againSaldo: printf("Informe o saldo do cliente  %c\n");
  107.             scanf("%s", &cliente[i].saldo);
  108.             fflush(stdin); 
  109.                      if (!isNumeric (cliente[i].numeroConta))
  110.         {
  111.             fprintf (stderr, "Por favor, numero conta valido.\n");
  112.             goto againSaldo;
  113.         }
  114.        
  115.             againDia:   printf("===================Informe o dia de abertura /");
  116.             scanf("%s", &cliente[i].data.dia);
  117.             fflush(stdin); 
  118.                      if (!isNumeric (cliente[i].data.dia))
  119.         {
  120.             fprintf (stderr, "Por favor, caractere conta valido.\n");
  121.             goto againDia;
  122.         }
  123.        
  124.             againMes:   printf("===================Informe o mês de abertura ");
  125.             scanf("%s", &cliente[i].data.mes);
  126.             fflush(stdin); 
  127.                      if (!isNumeric (cliente[i].data.mes))
  128.         {
  129.             fprintf (stderr, "Por favor, caractere conta valido.\n");
  130.             goto againMes;
  131.         }
  132.        
  133.                 againAno:   printf("===================Informe o ano de abertura /");
  134.             scanf("%s", &cliente[i].data.ano);
  135.             fflush(stdin); 
  136.                      if (!isNumeric (cliente[i].data.ano))
  137.         {
  138.             fprintf (stderr, "Por favor, caractere conta valido.\n");
  139.             goto againAno;
  140.         }
  141.  
  142.   printf("\n====Cadastro Realizado com Sucesso!====\n\n");
  143.  
  144.          printf("Deseja cadastrar mais algum cliente?\n");
  145.         scanf("%c", &cond);
  146.     if( cond == 'N'){
  147.         break;
  148.     }
  149.  
  150. }
  151.     }
  152.  
  153.  int buscarConta(struct Cliente cli[15] )
  154. {
  155.    
  156.     char cpf[11];
  157.     int i, cont=0;
  158.     char vl;
  159.     int status;
  160.     char cond;
  161.  
  162.    
  163. consultacpf:    printf("Informe o CPF do titular da conta\n");
  164.    
  165.     scanf("%s", &cpf);
  166.             status =  validaCpf(cpf);
  167.        if(status==1)
  168.        {
  169.             fprintf (stderr, "Por favor, entre com  CPF válido.\n");
  170.             goto consultacpf;
  171.         }
  172.     for (i=0; i<15; i++)
  173.    
  174.     {  
  175.    
  176.     if(! strcmp (cpf, cli[i].cpf) ){
  177.    
  178.      printf("===================Cliente encontrado====\n");
  179.      printf("NOME: %s\n",cli[i].nome); 
  180.      printf("CPF: %s\n",cli[i].cpf);
  181.      printf("RG: %s\n",cli[i].rg);
  182.      printf("CONTA: %s\n",cli[i].numeroConta);
  183.      printf("SALDO: %s\n",cli[i].saldo);
  184.      printf("%s/",cli[i].data.dia);
  185.      printf("%s/",cli[i].data.mes);
  186.      printf("%s",cli[i].data.ano);
  187.      cont =1;
  188.     }
  189.        
  190.     }
  191.     if(cont==0){
  192.    
  193.     printf("==========Nenhum cliente encontrado\n");       
  194.    
  195.     }
  196.  
  197. return i;
  198.  
  199.    
  200.        
  201. }
  202.  
  203. void sair(){
  204.  printf(" Voce saiu do sistema GNB\n");
  205.  exit(0);  
  206. }
  207. opcoes(){
  208.  
  209. int opcoes;
  210.  do
  211.     {
  212.         printf("\n\t======Bem vindo GNB System======\n\n");
  213.         printf("1. Para Cadastrar uma nova conta\n");
  214.         printf("2. Para buscar uma conta\n");
  215.         printf("0. Para Sair\n");
  216.  
  217.         scanf("%d", &opcoes);
  218.         system("cls || clear");
  219.  
  220.  switch(opcoes)
  221.  
  222.  {
  223.   case 1:
  224.     struct Cliente cli[15];
  225.     criarConta(cli);
  226.  
  227.     break;
  228.   case 2:
  229.  
  230.     buscarConta(cli);
  231.     break;
  232.   case 0:
  233.     sair();
  234.      default:
  235.                 printf("Digite uma opcao valida\n");
  236.  }
  237. } while(opcoes);
  238.    
  239. }
  240.  
  241.  
  242.  
  243. int main( ) {
  244.    
  245. opcoes();
  246.    
  247.    
  248.  
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement