Update cpfs.pas

This commit is contained in:
2026-06-23 20:53:19 -03:00
parent 811ad6eef1
commit 57cb826102
+44 -19
View File
@@ -6,7 +6,38 @@ type
cpf : string; cpf : string;
prox : TCPF; prox : TCPF;
end; end;
THash = array[0..99] of TCPF; THash = array[0..99] of ptcpf;
var
cpf:string;
bool:boolean;
function charInt(var letra:char):integer;
var tmp:integer;
begin
tmp:=Ord(letra)- Ord('0');
charInt:=tmp; //ord('0')=48... ord('1')=49... dai -48 vira 0...
end;
function validacaoDeInexistencialismoDeOutroCadastroDePessoasFisicasDentroDaLista(var cpf:string; final:integer; cpfs:thash ): boolean;
var
i:integer;
aux:tcpf;
existenciaDeTalInformacaoNaLista:boolean;
begin
aux:= cpfs[final];
existenciaDeTalInformacaoNaLista := false;
while (aux^.prox <> nil) and (not existenciaDeTalInformacaoNaLista) do
begin
if (cpf = aux^.cpf) then
existenciaDeTalInformacaoNaLista := true
else
aux:= aux^.prox;
end;
validacaoDeInexistencialismoDeOutroCadastroDePessoasFisicasDentroDaLista:= existenciaDeTalInformacaoNaLista;
end;
function validarCPF(var cpf:string):boolean; function validarCPF(var cpf:string):boolean;
@@ -15,10 +46,10 @@ function validarCPF(var cpf:string):boolean;
begin begin
soma:=0; soma:=0;
for i:=1 to 9 do for i:=1 to 9 do
//ord('0')=48... ord('1')=49... dai -48 vira 0... *11-i, vai decrementando, *9, *8, *7... // *11-i, vai decrementando, *9, *8, *7...
soma:=soma+(Ord(cpf[i])-48)*(11-i); soma:=soma+( charInt(cpf[i]) ) * (11-i);
dig1 := 11 - (soma mod 11); //digito 1 pega a sobra da divisao bla bla dig1 := 11 - (soma mod 11);
if (dig1 = 10) or (dig1 = 11) then if (dig1 = 10) or (dig1 = 11) then
dig1 := 0; dig1 := 0;
@@ -31,9 +62,7 @@ function validarCPF(var cpf:string):boolean;
if (dig2 = 10) or (dig2 = 11) then if (dig2 = 10) or (dig2 = 11) then
dig2 := 0; dig2 := 0;
ValidarCPF := ValidarCPF :=dig1=charInt( cpf[10] ) and dig2=charInt( cpf[10] );
(dig1=(Ord(cpf[10])-48)) and (dig2=(Ord(cpf[11])-48));
end; end;
@@ -44,7 +73,10 @@ procedure inserirCPF(var cpfs:THash; var cpf:string);
begin begin
if validarCPF(cpf) then if validarCPF(cpf) then
begin begin
pos:=(Ord(cpf[10])-48)*10 + (Ord(cpf[11])-48); //esse ngocio pega os digitos verificadores, gpt ajudou, transformar string em int é pesadelo doisDigitos:=( charInt(cpf[10])*10 ) + charInt(cpf[11]); //*10 pq né, vira dezena + decimal 👍
if (validacaoDeInexistencialismoDeOutroCadastroDePessoasFisicasDentroDaLista(cpf, doisDigitos, cpfs)) then
begin
new(novo); new(novo);
if novo = nil then if novo = nil then
writeln('Memoria cheia') writeln('Memoria cheia')
@@ -52,7 +84,7 @@ procedure inserirCPF(var cpfs:THash; var cpf:string);
begin begin
novo^.cpf := cpf; novo^.cpf := cpf;
novo^.prox := nil; novo^.prox := nil;
atual:= cpfs[pos]; atual:= cpfs[doisDigitos];
ant:=nil; ant:=nil;
while (atual <> nil) and (atual^.cpf < cpf) do while (atual <> nil) and (atual^.cpf < cpf) do
begin begin
@@ -61,8 +93,8 @@ procedure inserirCPF(var cpfs:THash; var cpf:string);
end; end;
if ant = nil then if ant = nil then
begin begin
novo^.prox := cpfs[pos]; novo^.prox := cpfs[doisDigitos];
cpfs[pos] := novo; cpfs[doisDigitos] := novo;
end end
else else
begin begin
@@ -74,14 +106,7 @@ procedure inserirCPF(var cpfs:THash; var cpf:string);
else else
writeln('CPF INVALIDO'); writeln('CPF INVALIDO');
end; end;
end;
var
hash: THash;
cpf:string;
bool:boolean;
begin begin
readln(cpf); readln(cpf);
inserirCPF(hash,cpf); inserirCPF(hash,cpf);