Validador de CPF

Publicado por Marcos (última atualização em 17/01/2013)

[ Hits: 6.563 ]

Download validadorCpf.c




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.

  



Esconder código-fonte

#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;
}

Scripts recomendados

Passando parâmetros com getopt

Molde para balões juninos

Números Pseudos Aleatórios

Batalha naval em C++

Converçor de Decimal para Binario


  

Comentários
[1] Comentário enviado por elgio em 21/01/2013 - 12:16h

int conversor (char valor)
{
if ((valor >= '0')&& (valor <= '9')) return (valor - '0');


return (-1); // -1 ==> Erro. nao foi passado um digito em valor
}


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts