Ir ao conteúdo

Como calcular um CPF, se é valido?


voleibol

Posts recomendados

Postado

Ola Amigos....

Será que alguem poderia me passar a formula para o calculo de CPF??? notem que não quero função pronta ou algma rotina. Inclusive não quero nem comentar a linguagem que estarei programando.

o que eu quero é a formula...como fazer para descobriri se o CPF é valido ou não??

Obrigado

:rolleyes:

Postado

Eu tenho a formula pra calcular aqueles digitos de controle, aqueles 2 depois do traco, se servir me de ideia. você digita os numeros principais e ele te da os 2 digitos de controle, super interessante.

Mensagem editada por estar escrita com letras maiúsculas

Postado

Obrigado....

Mas eu ja descobri. Se alguem tiver interesse, eu ja fiz um auto explicativo.....

Ai é só adaptar para sua linguagem favorita

Abraço.

:-BEER

Postado
Postado Originalmente por voleibol@11 de abril de 2005, 08:21

Fiz um explicativo na planilha do Excel...tem como disponibilizar aqui???

Se tiver como faço?

  :huh:

você pode dar um print screen na tabela e colocar como imagem aqui.

você pode mandar para meu email?

Queria saber como funciona...

[email protected]

abraços,

Leandro

Postado
Postado Originalmente por ace0174@20 de abril de 2005, 00:55

Eu tenho um programa em JAva q eu fiz pra faculdade que resolve isso. O procedimento  pode ser visto aqui: LInk

:-BEER

valeu ai amigo...

muito bom esse link que você mandou.

abraços

Leandro

Postado
Postado Originalmente por voleibol@07 de abril de 2005, 08:12

Obrigado....

Mas eu ja descobri. Se alguem tiver interesse, eu ja fiz um auto explicativo.....

Ai é só adaptar para sua linguagem favorita

Abraço.

:-BEER

Gostaria de saber...poderia enviar-me

[email protected]/br

  • 2 semanas depois...
  • 2 anos depois...
Postado

B)

Obrigado....

Mas eu ja descobri. Se alguem tiver interesse, eu ja fiz um auto explicativo.....

Ai é só adaptar para sua linguagem favorita

Abraço.

:-BEER

Amigo, gostaria que você me enviasse o auto explicativo da fórmula para cpf, pois o que quero é saber como se chega lá. Desde já agradeço. Um abraço!!!

Postado

RETIRADO DA INTERNET


Verifica Validade de CGC e CPF
01) Dica Original
unit CPFeCGC;
interface
function cpf(num: string): boolean;
function cgc(num: string): boolean;
implementation
uses SysUtils;


function cpf(num: string): boolean;
var
n1,n2,n3,n4,n5,n6,n7,n8,n9: integer;
d1,d2: integer;
digitado, calculado: string;
begin
n1:=StrToInt(num[1]);
n2:=StrToInt(num[2]);
n3:=StrToInt(num[3]);
n4:=StrToInt(num[4]);
n5:=StrToInt(num[5]);
n6:=StrToInt(num[6]);
n7:=StrToInt(num[7]);
n8:=StrToInt(num[8]);
n9:=StrToInt(num[9]);
d1:=n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
d1:=11-(d1 mod 11);
if d1>=10 then d1:=0;
d2:=d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
d2:=11-(d2 mod 11);
if d2>=10 then d2:=0;
calculado:=inttostr(d1)+inttostr(d2);
digitado:=num[10]+num[11];
if calculado=digitado then
cpf:=true
else
cpf:=false;
end;


function cgc(num: string): boolean;
var
n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12: integer;
d1,d2: integer;
digitado, calculado: string;
begin
n1:=StrToInt(num[1]);
n2:=StrToInt(num[2]);
n3:=StrToInt(num[3]);
n4:=StrToInt(num[4]);
n5:=StrToInt(num[5]);
n6:=StrToInt(num[6]);
n7:=StrToInt(num[7]);
n8:=StrToInt(num[8]);
n9:=StrToInt(num[9]);
n10:=StrToInt(num[10]);
n11:=StrToInt(num[11]);
n12:=StrToInt(num[12]);
d1:=n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
d1:=11-(d1 mod 11);
if d1>=10 then d1:=0;
d2:=d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
d2:=11-(d2 mod 11);
if d2>=10 then d2:=0;
calculado:=inttostr(d1)+inttostr(d2);
digitado:=num[13]+num[14];
if calculado=digitado then
cgc:=true
else
cgc:=false;
end;
end.


02) Dica melhorada
function CalculaCnpjCpf(Numero : String) : String;
var
i,j,k, Soma, Digito : Integer;
CNPJ : Boolean;
begin
Result := Numero;
case Length(Numero) of
9:
CNPJ := False;
12:
CNPJ := True;
else
Exit;
end;
for j := 1 to 2 do
begin
k := 2;
Soma := 0;
for i := Length(Result) downto 1 do
begin
Soma := Soma + (Ord(Result[i])-Ord('0'))*k;
Inc(k);
if (k > 9) and CNPJ then
k := 2;
end;
Digito := 11 - Soma mod 11;
if Digito >= 10 then
Digito := 0;
Result := Result + Chr(Digito + Ord('0'));
end;
end;

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!