Program Verifica_CPF ;
var cpf,aux:string ;
vet:array[1..11] of integer;
Soma1,Soma2,d1,d2,i,convaux,coderro:integer;
Begin
write('digite seu cpf: ');
read(cpf);
for i:=1 to 11 do
begin
aux:=cpf[i];
val(aux,convaux,coderro);
vet[i]:=convaux;
end;
Soma1:= (Vet[1]*10)+(Vet[2]*9)+(vet[3]*8)+(vet[4]*7)+(vet[5]*6)+(vet[6]*5)+(vet[7]*4)+(vet[8]*3)+(vet[9]*2);
d1:= 11 -( soma1 mod 11);
If (d1 = 10) or (d1=11) then
D1:=0;
Soma2:= (Vet[1]*11)+(Vet[2]*10)+(vet[3]*9)+(vet[4]*8)+(vet[5]*7)+(vet[6]*6)+(vet[7]*5)+(vet[8]*4)+(vet[9]*3)+(D1*2);
d2:= 11- (Soma2 mod 11);
if (d2=10) or (d2=11) then
d2:=0;
If (Vet[10] =D1) and (Vet[11] = D2) Then
Begin
WriteLn('CPF VALIDO');
WriteLn(Vet[1],Vet[2],Vet[3],'.',vet[4],vet[5],vet[6],'.',vet[7],vet[8],vet[9],'-',vet[10],vet[11]);
End
Else
WriteLn('CPF INVALIDO');
End.