Pessoal boa noite! Preciso de uma ajuda com a funcionalidade validaCPF.js Estou colocando um CPF valido. Porem a função "verificaSegundoDigito" esta retornando "false". Nao estou conseguindo achar o motivo do problema.
Comparando meu codigo x codigo Alura esta igual aparentemente.
O meu CPF nao valida. Porem gerando CPF aleatorio na internet, o codigo funciona. Me parece que tem algum problema no codigo.
Meu cpf começa com 3 e acaba com 0
Poderiam me axiliar? Abaixo criei um arquivo teste para simular o problema..
//Arquivo testaCPF,js
.function verificaCPFInvalidos(cpf){
//array
const cpfsInvalidos = [
"11111111111",
"22222222222",
"33333333333",
"44444444444",
"55555555555",
"66666666666",
"77777777777",
"88888888888",
"99999999999",
"00000000000"
]
return cpfsInvalidos.indexOf(cpf) === -1;
}
function somaNumerosCPF (cpf, totalDeDigitos, peso){
let soma = 0;
for (let indice=1;indice <= totalDeDigitos; indice++){
soma += parseInt(cpf.substring (indice -1, indice )) * (peso - indice);
}
return soma;
}
function verificaDigito (cpf, totalDeDigitos, peso, digitoDeVerificacao){
const soma = somaNumerosCPF(cpf,totalDeDigitos,peso)
const resto = (soma * 10) % 11;
return resto === digitoDeVerificacao;
}
function verificaPrimeiroDigito(cpf){
const peso = 11;
const totalDeDigitosPrimeiraParte = 9;
const digitoDeVerificacao = parseInt(cpf.substring(9,10))
return verificaDigito(cpf,
totalDeDigitosPrimeiraParte,
peso,
digitoDeVerificacao)
}
function verificaSegundoDigito (cpf){
const peso = 12;
const totalDeDigitosSegundaParte = 10;
const digitoDeVerificacao = parseInt(cpf.substring(10,11));
return verificaDigito (cpf,
totalDeDigitosSegundaParte,
peso,
digitoDeVerificacao);
}
function validaCPF (cpf){
return (
verificaPrimeiroDigito(cpf)&&
verificaSegundoDigito(cpf)&&
verificaCPFInvalidos (cpf)
);
}
//teste
const vcpf = "3******0";
console.log(verificaPrimeiroDigito(vcpf));
console.log(verificaSegundoDigito(vcpf));
console.log(verificaCPFInvalidos(vcpf));