Cria os dígitos verificadores para CPF
Publicado por Luis Eduardo Boiko Ferreira 22/03/2009 (última atualização em 16/02/2010)
[ Hits: 8.406 ]
Homepage: https://www.facebook.com/luiseduardo.boiko
Os CPFs possuem nove dígitos e dois dígitos verificadores. Os dígitos verificadores são calculados com base nos números do CPF, e servem, basicamente, para evitar falhas e erros de digitação, pois se o CPF digitado não bater com os dígitos verificadores, uma buzina irá tocar te dizendo que o CPF não é valido.
Tive que desenvolver este script rápido, portanto, certamente poderá ser reescrito de uma forma muito mais compacta do que a atual. Se alguém o modificar, poste as mudanças aqui.
#include <stdio.h> #include <stdlib.h> main() { int cpf, num1, num2, num3, num4, num5, num6, num7, num8, num9, ver1, ver2; int mun1,mun2,mun3,mun4,mun5,mun6,mun7,mun8,mun9,mun10,total,total2; printf("Digite os nove primeiros digitos do CPF:\n"); scanf("%d",&cpf); if((cpf/100000000)==0) { num1=0; num2=(cpf/10000000)-(num1*10); num3=((cpf/1000000)-(((num1*10)+num2)*10)); num4=((cpf/100000)-((((((num1*10)+num2)*10))+num3)*10)); num5=((cpf/10000)-((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10))); num6=((cpf/1000)-((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10); num7=((cpf/100)-((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10); num8=((cpf/10)-((((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10)+num7)*10); num9=(cpf-((((((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10)+num7)*10)+num8)*10); } else num1=cpf/100000000; num2=(cpf/10000000)-(num1*10); num3=((cpf/1000000)-(((num1*10)+num2)*10)); num4=((cpf/100000)-((((((num1*10)+num2)*10))+num3)*10)); num5=((cpf/10000)-((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10))); num6=((cpf/1000)-((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10); num7=((cpf/100)-((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10); num8=((cpf/10)-((((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10)+num7)*10); num9=(cpf-((((((((((((((((((num1*10)+num2)*10))+num3)*10))+num4)*10)))+num5)*10)+num6)*10)+num7)*10)+num8)*10); mun1=(num1*10); mun2=(num2*9); mun3=(num3*8); mun4=(num4*7); mun5=(num5*6); mun6=(num6*5); mun7=(num7*4); mun8=(num8*3); mun9=(num9*2); total=mun1+mun2+mun3+mun4+mun5+mun6+mun7+mun8+mun9; printf("Total da soma antes do calculo de mod eh %d \n\n", total); ver1=(total%11); printf("Apos o calculo de Mod o DV 1 vale:%d \n\n", ver1); if((ver1==0)||(ver1==1)) ver1=0; else ver1=(11-ver1); mun1=(num1*11); mun2=(num2*10); mun3=(num3*9); mun4=(num4*8); mun5=(num5*7); mun6=(num6*6); mun7=(num7*5); mun8=(num8*4); mun9=(num9*3); mun10=(ver1*2); total2=mun1+mun2+mun3+mun4+mun5+mun6+mun7+mun8+mun9+mun10; printf("Total da soma antes do calculo de mod eh %d \n\n", total2); ver2=(total2%11); printf("Apos o calculo de Mod o DV 2 vale:%d \n\n", ver2); if((ver2==0)||(ver2==1)) ver2=0; else ver2=(11-ver2); printf("O primeiro digito verificador do cpf em questão eh:%d \n O segundo eh: %d \n", ver1, ver2); }
Verificador de senhas: Comparando palavras
Rotacionamento de um Retângulo utilizando herança
Agora temos uma assistente virtual no fórum!!! (247)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Agora temos uma assistente virtual no fórum!!! (247)
iso de sistema 32 bit em atividade (12)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (27)