Buscar

Digito verificador cpf

Código

Você deve multiplicar individualmente todos os algarismos de um número requerido por uma seqüência numérica (9,8,7,..,2,9,8...) partindo do fim e repetindo a sequência caso seja necessário. Soma os resultados da multiplicação e divida tudo por onze. O resto dessa divisão deverá ser o DV, mas se esse resto for maior do que nove você deve subtrair esse resultado de onze. Existem várias tabelas utilizadas hoje no mercado, a mais usual é a 2..9 e depois a 2..7, sem contar outros tipos de módulos.

Segue um exemplo simples com cinco algarimos:

Matrícula: 00113-9

=> (0*5) + (0*6) + (1*7) + (1*8) + (3*9) = 0 + 0 + 7 + 8 + 27 = 42

=> 42 mod 11 => DV é 9}

//Calcula o digito verificador cpf
function DV11(Matr : string): string;
{Calculo pelo módulo 11 - tabela 2..9}
var
X, Cont, Soma, DV, NMatr : integer;
begin
Cont := 5; Soma := 0;
For X := 1 to 5 do
begin
NMatr := StrToInt(Copy(Matr,Cont-4,1));
Soma := Soma + (NMatr * Cont);
Inc(Cont);
end;
DV := Soma mod 11;
if DV > 9 then DV := 11 - DV;
Result := IntToStr(DV);
end;

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 12/06/03
Por: Felipe Monteiro
Visualizada: 5104 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009