1
resposta

Erro na validaCPF

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));
1 resposta

Fala ai Felipe, tudo bem? Na verdade você precisa usar a função validaCPF para validar o CPF, ela vai garantir que o primeiro e segundo digito são válidos, além, de verificar se o mesmo não vai na lista de CPF's inválidos (números repetidos).

Sobre ela não validar o seu CPF eu precisaria entender com mais calma o motivo, fiz o teste aqui com o meu e validou e funcionou certinho como o esperado.

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software