Validação de CNPJ
O CNPJ é composto 8(oito) dígitos, seguido de 4 dígitos(que indicam o número de filiais) e os 2 finais digítos que são responsáveis pela validação do CNPJ. Sua validação é semelhante a do CPF. A principio precisamos de um CNPJ para um teste, vamos usar o CNPJ: 12345678/0001-95. Os dígitos de validação são o 95. Calculando o primeiro digito de validação é feito de forma bastante simples. Multiplicaremos o primeiro digito por 5 o segundo por 4 o terceiro por 3,etc. Da mesma forma que na imagem abaixo:
Multiplicamos e somamos os resultados. Depois dividiremos por 11, e vamos levar em conta o resultado do quociente(modulo) da divisão. Se ele for menor que 2 o valor do dígito validador passa a ser 0, se não subtraímos 11 para obter o dígito, que vai ser o primeiro digito validador.
Segundo digito
Efetuamos a multiplicação da mesma forma que com o seguindo digito, mas mudamos os valores que serão multiplicados, começamos agora com 6! E seguimos a mesma ordem igual na imagem abaixo:
Após as multiplicações, efetuamos a soma dos valores, e dividimos por 11. Como no cálculo anterior, utilizamos o quociente da divisão(modulo). Se ele for menor que 2 o valor do dígito validador passa a ser 0, se não subtraímos 11 para obter o dígito, que vai ser o primeiro digito validador.
Abaixo segue o código-fonte escrito em C de um programa que efetua a validação.
//CNPJ
#include <stdio.h>
#include <string.h>
int main()
{
char cnpj[19];
int i,j=9,icnpj[19],somador=0,div,digito1,div2,digito2;
do{
printf("Digite o CNPJ: ");
scanf(" %s",cnpj);
if(strlen(cnpj)!=14)
{
printf("VOCE NAO DIGITOU 14 DIGITOS.\n");
}
}while(strlen(cnpj)!=14);
for(i=0;i<18;i++)
{
icnpj[i]=cnpj[i]-48;
}
//soma dos digitos.
for(i=0;i<5;i++)
{
if(i!=4)
{
somador+=icnpj[i]*(5-i);
}
}
for(i=4;i<12 && j!=1;i++)
{
somador+=icnpj[i]*(j--);
}
//DIVISAO
div=somador%11;
//1 DIGITO
if(div<2)
{
digito1=0;
}
else
{
digito1=11-div;
}
//2 DIGITO
somador=0;
j=9;
for(i=0;i<6;i++)
{
if(i!=5)
{
somador+=icnpj[i]*(6-i);
}
}
for(i=5;i<13 && j!=1;i++)
{
somador+=icnpj[i]*(j--);
}
div2=somador%11;
if(div2<2)
{
digito2=0;
}
else
{
digito2=11-div2;
}
//VALIDAR DIGITOS.
if( (digito1==icnpj[12]) && (digito2=icnpj[13]) )
{
printf("CNPJ VALIDO.\n");
}
else
{
printf("CNPJ INVALIO.\n");
}
return 0;
}
Boa sorte e bons estudos.
[]‘s



Últimos Comentários