56 lines
1.1 KiB
ObjectPascal
56 lines
1.1 KiB
ObjectPascal
program cpfs;
|
|
|
|
type
|
|
TCPF = ^ptcpf;
|
|
ptcpf = record
|
|
cpf : string;
|
|
prox : TCPF;
|
|
end;
|
|
|
|
|
|
procedure inserirCPF();
|
|
var
|
|
i:integer;
|
|
begin
|
|
|
|
end;
|
|
|
|
function validarCPF(var cpf:string):boolean;
|
|
var
|
|
i, soma, dig1, dig2:integer;
|
|
begin
|
|
soma:=0;
|
|
for i:=1 to 9 do
|
|
//ord('0')=48... ord('1')=49... dai -48 vira 0... *11-i, vai decrementando, *9, *8, *7...
|
|
soma:=soma+(Ord(cpf[i])-48)*(11-i);
|
|
|
|
dig1 := 11 - (soma mod 11); //digito 1 pega a sobra da divisao bla bla
|
|
if (dig1 = 10) or (dig1 = 11) then
|
|
dig1 := 0;
|
|
|
|
|
|
soma := 0;
|
|
for i := 1 to 10 do
|
|
soma := soma + (Ord(cpf[i])-48)*(12-i);
|
|
|
|
dig2 := 11 - (soma mod 11);
|
|
if (dig2 = 10) or (dig2 = 11) then
|
|
dig2 := 0;
|
|
|
|
|
|
ValidarCPF :=
|
|
(dig1=(Ord(cpf[10])-48)) and (dig2=(Ord(cpf[11])-48));
|
|
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
hash : array[0..99] of TCPF;
|
|
cpf:string;
|
|
bool:boolean;
|
|
begin
|
|
readln(cpf);
|
|
bool:= validarCPF(cpf);
|
|
writeln(bool);
|
|
end. |