Código
---------------------------------------------------------
O programa recebe o numero do CPF, sem o digito, e cal-
cula os 2 digitos separados, multiplicando o cpf infor-
mado de traz pra frente, por 2, por 3, ate 10, e acumula
a soma desta multiplicacao. Se o resto da divisao por 11
for menor que 2, entao o 1§ digito eh = 0 (zero), se for
2 ou mais, o digito sera 11 menos o resto da divisao da
soma por 11. Para calcular o 2§ digito concatena-se o 1§
digito ao CPF informado, faz a divisao seguindo os passos
do 1§ digito, agora de 2 ate 11 acumulando a soma dessa
multiplicacao. Se o resto da divisao por 11 for menor que
2, entao o 2§ digito eh = 0 (zero), se nao o digito sera
11 menos o resto da divosao da soma2 por 11.
---------------------------------------------------------
Autor : Elivaldo Silva
}
program calcula_cpf;
uses
crt;
var
num,resto,cpf : longint;
dv1,dv2,soma1,soma2,i : integer;
begin
clrscr;
writeln(#10' Programa Calcula CPF'#10);
write ('Digite o CPF sem o digito: ');
readln (cpf);
{ inicializacao das variaveis }
num := cpf;
soma1 := 0;
soma2 := 0;
i := 2;
{ calculando o primeiro digito do CPF }
while num > 0 do
begin
resto := num mod 10;
soma1 := (resto*i) + soma1;
num := num div 10;
i := i+1;
end;
{ se o resto da divisao por 11 eh menor que 2 }
{ entao o digito eh = 0 }
if soma1 mod 11 < 2 then
dv1 := 0
{ se nao o digito eh 11 menos o resto da divisao por 11 }
else
dv1 := 11-(soma1 mod 11);
i := 3;
num := cpf;
{ unindo o 1§ digito ao cpf para calculo do 2§ digito }
soma2 := (dv1*2) + soma2;
{ calculando o 2§ digito do cpf }
while num > 0 do
begin
resto := num mod 10;
soma2 := (resto*i) + soma2;
num := num div 10;
i := i+1;
end;
if soma2 mod 11 < 2 then
dv2 := 0
else
dv2 := 11-(soma2 mod 11);
writeln(#10'CPF.: ',cpf,'-',dv1,dv2);
readkey;
end.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009