segunda-feira, 29 de setembro de 2014

Este Algoritmo aceita e valida o CPF- Cadastro de Pessoa Fisica.





{ Este programa aceita e valida o CPF- Cadastro de Pessoa Fisica. }

program ValidarCPF;
uses crt ;

function IsCpf(Cpf: string): boolean;
var S, i, R, Num, Code : integer;
       Dig10, Dig11 : string;
begin
  if length(Cpf) <> 11
     then begin
            IsCpf := False;
            Exit;
          end;

{ *-- Calculo do 1o. Digito Verificador --* }
  S := 0;
  for i := 1 to 9 do
  begin
    val(Cpf[i], Num, Code);
    S := S + (Num * (11 - i));
  end;
  R := 11 - (S mod 11);
  if (R = 10) or (R = 11)
     then Dig10 := '0'
  else str(R:1, Dig10);

{ *-- Calculo do 2o. Digito Verificador --* }
  S := 0;
  for i := 1 to 10 do
  begin
    val(Cpf[i], Num, Code);
    S := S + (Num * (12 - i));
  end;
  R := 11 - (S mod 11);
  if (R = 10) or (R = 11)
     then Dig11 := '0'
  else str(R:1, Dig11);

{ Verifica se os digitos calculados conferem. }
  IsCpf := (Dig10 = Cpf[10]) and (Dig11 = Cpf[11]);
end;

function ImprimeCpf(Cpf: string): string;
begin
  ImprimeCpf := copy(Cpf,1,3) + '.' + copy(Cpf,4,3) + '.' +
    copy(Cpf,7,3) + '-' + copy(Cpf,10,2);
end;

var Cpf: string;

begin
  clrscr;
  gotoxy(01,01); write('Cadastro de Pessoas Fisicas.');
  gotoxy(01,03); write('C.P.F.: '); readln(Cpf);
  gotoxy(01,05); write('C.P.F.: ', ImprimeCpf(Cpf));
  if   IsCpf(Cpf)
       then writeln(', valido.')
  else writeln(', invalido !');

  readkey;
end.                      

Nenhum comentário:

Postar um comentário

Pascal - Lazarus