Advertisement
danrleydaniel

cnpj.c

Jan 24th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. //0 1 . 2 3 4 . 5 6 7 / 8 9 10 11 - 12 13
  5.  
  6. int chartoint(char);
  7. char inttochar(int);
  8. int validaCNPJ(char [16]);
  9.  
  10.  
  11. int main(void) {
  12.   char cnpj[16];
  13.   printf("\nDigite um CNPJ: ");
  14.   scanf("%s", cnpj);
  15.   if(validaCNPJ(cnpj)){
  16.     printf("\nCNPJ válido!");
  17.   } else{
  18.     printf("\nCNPJ inválido!");
  19.   }
  20. }
  21.  
  22. int chartoint(char c){
  23.     return c - '0';
  24. }
  25.  
  26. char inttochar(int n){
  27.   return n + 48;
  28. }
  29.  
  30. int validaCNPJ(char cnpj[16]){
  31.   int soma = 0;
  32.   int num;
  33.   int j = 0;
  34.   char digito1;
  35.   for(int i = 5; i >= 2; i--){
  36.     num = chartoint(cnpj[j]);
  37.     num *= i;
  38.     soma += num;
  39.     j++;
  40.   }
  41.   for(int i = 9; i >= 2; i--){
  42.     num = chartoint(cnpj[j]);
  43.     num *= i;
  44.     soma += num;
  45.     j++;
  46.   }
  47.   soma = soma % 11;
  48.   if(soma < 2){
  49.     soma = 0;
  50.   } else{
  51.     soma = 11 - soma;
  52.   }
  53.   digito1 = inttochar(soma);
  54.   if(digito1 != cnpj[12]){
  55.     return 0;
  56.   } else{
  57.     j = 0;
  58.     soma = 0;
  59.     for(int i = 6; i >= 2; i--){
  60.       num = chartoint(cnpj[j]);
  61.       num *= i;
  62.       soma += num;
  63.       j++;
  64.     }
  65.     for(int i = 9; i >= 2; i--){
  66.       num = chartoint(cnpj[j]);
  67.       num *= i;
  68.       soma += num;
  69.       j++;
  70.     }
  71.     soma = soma % 11;
  72.     if(soma < 2){
  73.       soma = 0;
  74.     } else{
  75.       soma = 11 - soma;
  76.     }
  77.     digito1 = inttochar(soma);
  78.     if(digito1 != cnpj[13]){
  79.       return 0;
  80.     } else{
  81.       return 1;
  82.     }
  83.   }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement