Validador de CPF
Publicado por Marcos (última atualização em 17/01/2013)
[ Hits: 6.802 ]
Exemplo simples de um validador de CPF.
O script recebe um número de CPF e retorna se o número está correto ou qual sequência de dígitos verificadores eram esperados.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*função responsável por converter um caractere compreendido no intervalo de 0 a 9 em inteiro (no mesmo intervalo)*/
int conversor(char valor){
switch(valor){
case '9': return 9;
case '8': return 8;
case '7': return 7;
case '6': return 6;
case '5': return 5;
case '4': return 4;
case '3': return 3;
case '2': return 2;
case '1': return 1;
case '0': return 0;
}
}
void validarCPF(){
int numero[11], dig1,dig2,soma=0,valor,i;
char cpf[11];//armazena cpf digitado
printf("\nDigite o CPF (sem pontos e traco): \n\n\t>> ");
setbuf(stdin,NULL);//limpando buffer do teclado
gets(cpf);
// convertendo caracteres em int
for(i=0;i<11;i++){
numero[i]=conversor(cpf[i]);
}
// calculando primeiro dígito
for(i=0;i<9;i++)
soma+=numero[i]*(10-i);
valor=soma%11;
if(valor==0 || valor==1)
dig1=0;
else
dig1=11-valor;
numero[9]=dig1;
// calcualndo segundo dígito
soma=0;
for(i=0;i<10;i++)
soma+=numero[i]*(11-i);
valor=soma%11;
if(valor==0 || valor==1)
dig2=0;
else
dig2=11-valor;
// exibindo resultado
if(dig1==numero[9] && dig2==numero[10]){
printf("\n\nCPF correto: ");
for(i=0;i<11;i++)
printf(" %d",numero[i]);
}
else{
printf("\nProblemas nos digitos verificadores!");
printf("\n\nDigitos verificadores esperados para esta sequencia: %d%d",dig1,dig2);
}
printf("\n\n\n");
}
int main(){
int opcao;
do{
printf("\n\tPrograma para validar CPF\n\n");
printf("Selecione uma das opcoes disponiveis: \n");
printf("\n<1> Validar\n<0> Sair\n\n");
scanf("%d",&opcao);
switch(opcao){
case 1: validarCPF();
}
}while(opcao!=0);
return 0;
}
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
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Trazendo de volta o Serviços em Segundo Plano no Plasma6
É normal não gostar de KDE? (21)
Servidor para arquivos e banco de dados (4)
780 mil usuários do Janelas baIxaram Linux em um mês (4)
Atualizei meu ubuntu e desliguei e ele não inicia corretamente (12)









