Pular para o conteúdo

Validador de CPF

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.
Marcos marcos@marcos
Hits: 6.926 Categoria: C/C++ Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download validadorCpf.c Enviar nova versão

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

Sequencia Fibonacci

Também enche a memória, porém desta vez com processos

Validar CPF em C++ (esse funciona)

checkscan.h

Testar o melhor método de organização C (inserção, bolha e shell-sort)

#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

Entre na sua conta para comentar.