Validador de CPF
Publicado por Marcos (última atualização em 17/01/2013)
[ Hits: 6.564 ]
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; }
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta