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.799 ]
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);
}
Conversão do número de dias em anos (meu segundo programa em C)
Calculo de Área e Diametro do circulo
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (5)
Instalação do cosmic no archlinux (0)
Formas seguras de instalar Debian Sid [RESOLVIDO] (14)









