-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsharp.cs
51 lines (43 loc) · 1.34 KB
/
sharp.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
public class CNPJValidator
{
public static bool ValidarCNPJAlfanumerico(string cnpj)
{
if (cnpj.Length != 14) return false;
int CharParaValor(char caractere)
{
return (int)caractere - 48;
}
int[] valores = new int[12];
for (int i = 0; i < 12; i++)
{
valores[i] = CharParaValor(cnpj[i]);
}
// Pesos para o primeiro DV
int[] pesos1 = { 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
int soma = 0;
for (int i = 0; i < 12; i++)
{
soma += valores[i] * pesos1[i];
}
int resto = soma % 11;
int primeiroDV = resto < 2 ? 0 : 11 - resto;
// Pesos para o segundo DV
int[] valoresComDV = new int[13];
Array.Copy(valores, valoresComDV, 12);
valoresComDV[12] = primeiroDV;
int[] pesos2 = { 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 };
soma = 0;
for (int i = 0; i < 13; i++)
{
soma += valoresComDV[i] * pesos2[i];
}
resto = soma % 11;
int segundoDV = resto < 2 ? 0 : 11 - resto;
return primeiroDV == CharParaValor(cnpj[12]) && segundoDV == CharParaValor(cnpj[13]);
}
public static void Main()
{
Console.WriteLine(ValidarCNPJAlfanumerico("12ABC34501DE35")); // True ou False
}
}