Hoje é Dom Set 05, 2010 1:15 am




   [ 9 Mensagens ] 
 Validando um CPF 
Autor Mensagem
Site Admin

Data de registro: Seg Abr 20, 2009 7:03 pm
Mensagens: 8
Mensagem Validando um CPF
Sabendo que um CPF consiste de 11 dígitos(entre 0 e 9) e que os dois últimos são calculados, pretende-se escrever um programa em Linguagem C para validar um CPF.

Para tanto, deve-se executar os seguintes cálculos

Etapa 1:
Código:
D1 = d1+2*d2+3*d3+4*d4+5*d5+6*d6+7*d7+8*d8+9*d9

onde cada di representa um dígito do CPF contado da esquerda para a direita. Feito isto, deve-se calcular o resto da divisão de D1 por 11. Se tal resto for igual a 10 então deve-se considerá-lo como sendo 0(zero). Se este valor for igual a d10 então prosseguimos para a próxima etapa, do contrário o CPF NÃO é válido.

Etapa 2:
Código:
D2 = d2+2*d3+3*d4+4*d5+5*d6+6*d7+7*d8+8*d9+9*d10

Seguindo o mesmo raciocínio de antes. Deve-se comparar D2 com d10. Se houver igualdade então o CPF é válido, do contrário tal CPF NÃO é válido.
Como fica tal programa?


Seg Abr 20, 2009 8:01 pm
Site Admin

Data de registro: Seg Abr 20, 2009 7:03 pm
Mensagens: 8
Mensagem Re: Validando um CPF
Considere que cpf é uma variável inteira e seja aux outra variável, também inteira que usaremos para nos auxiliar no processo de obter os dígitos do cpf. Podemos então proceder assim:
Código:
d11 = aux % 10;
aux = aux / 10;
d10 = aux % 10;
aux = aux / 10;
d9   = aux % 10;
aux = aux / 10;
...

Com isto é possível obter todos os dígitos do CPF.


Sáb Abr 25, 2009 10:15 am
Site Admin

Data de registro: Seg Abr 20, 2009 7:03 pm
Mensagens: 8
Mensagem Re: Validando um CPF
Recebi o seguinte código por email
Código:
#include int main(){
int cpf,aux,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,D1,D2;
  /*d1d2d3d4d5d6d7d8d9d10d11*/
  cpf=aux;
  d11=aux%10;
  aux=aux/10; d10=aux%10;
  aux=aux/10; d9=aux%10;
  aux=aux/10; d8=aux%10;
  aux=aux/10; d7=aux%10;
  aux=aux/10; d6=aux%10;
  aux=aux/10; d5=aux%10;
  aux=aux/10; d4=aux%10;
  aux=aux/10; d3=aux%10;
  aux=aux/10; d2=aux%10;
  aux=aux/10; d1=aux%10;
  D1=d1+2*d2+3*d3+4*d4+5*d5+6*d6+7*d7+8*d8+9*d9;
  D2=d2+2*d3+3*d4+4*d5+5*d6+6*d7+7*d8+8*d9+9*d10;
  printf(\"Escreva seu numero do CPF (completo e sem traco) para verificarmos se ele eh valido\\n\");
  scanf(\"%d\",&cpf);
  if(d10==D1%11 && d11==D2%11)
  {
     printf(\"Seu CPF eh valido!\");
  }
  else{
     printf(\"Seu CPF eh invalido!\");
  }
  getch();
  return 0;
}

Fiquem a vontade para comentar os erros que encontrarem.


Sáb Mai 02, 2009 10:39 am

Data de registro: Sáb Mai 02, 2009 1:03 pm
Mensagens: 1
Mensagem Re: Validando um CPF
Tá ai o meu código:
#include<stdio.h>

int main()
{
unsigned long int cpf;
int resto,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,D1,D2;
printf("Escreva seu numero do CPF (completo e sem traco) para verificarmos se ele eh valido\n");
scanf("%lu",&cpf);
printf("%lu\n",cpf);
d11=cpf%10;
cpf=cpf/10; d10=cpf%10;
cpf=cpf/10; d9=cpf%10;
cpf=cpf/10; d8=cpf%10;
cpf=cpf/10; d7=cpf%10;
cpf=cpf/10; d6=cpf%10;
cpf=cpf/10; d5=cpf%10;
cpf=cpf/10; d4=cpf%10;
cpf=cpf/10; d3=cpf%10;
cpf=cpf/10; d2=cpf%10;
cpf=cpf/10; d1=cpf%10;
printf("%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld,%ld",d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11);
D1=d1+2*d2+3*d3+4*d4+5*d5+6*d6+7*d7+8*d8+9*d9;
resto=D1%11;
if(resto==10){
resto=0;
}
if(resto==d10){
D2=d2+2*d3+3*d4+4*d5+5*d6+6*d7+7*d8+8*d9+9*d10;
resto=D2%11;
if(resto==10){
resto=0;
}
if(resto==d11){
printf("\nCPF valido");
}
}
else{
printf("\nCPF invalido");
}
getch();
return 0;
}

Entretanto ele só funciona para numeros menores do que 4.294.967.295, pois é o que um unsigned long int suporta.
Como resolvo isso?


Sáb Mai 02, 2009 1:09 pm
Site Admin

Data de registro: Seg Abr 20, 2009 7:03 pm
Mensagens: 8
Mensagem Re: Validando um CPF
Você pode usar uma variável para o cpf(os 9 primeiros dígitos) e uma para armazenar os dois dígitos separados.


Sáb Mai 02, 2009 5:02 pm

Data de registro: Sex Mai 01, 2009 10:29 pm
Mensagens: 2
Mensagem Re: Validando um CPF
Taqui, pessoal. Consegui:

#include <stdio.h>
int main()
{
long int cpf;
int aux,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,D1,D2;
printf ("Digite seu CPF para verificarmos se ele eh valido.\n Obs.:coloque os dois ultimos digitos separados dos anteriores por espaco.\n");
scanf ("%ld%d",&cpf,&aux);
d11=aux%10;
d10=aux/10;
d9=cpf%10;
cpf=cpf/10; d8=cpf%10;
cpf=cpf/10; d7=cpf%10;
cpf=cpf/10; d6=cpf%10;
cpf=cpf/10; d5=cpf%10;
cpf=cpf/10; d4=cpf%10;
cpf=cpf/10; d3=cpf%10;
cpf=cpf/10; d2=cpf%10;
d1=cpf/10;
D1=(d1+2*d2+3*d3+4*d4+5*d5+6*d6+7*d7+8*d8+9*d9)%11;
D1=D1%10;
D2=(d2+2*d3+3*d4+4*d5+5*d6+6*d7+7*d8+8*d9+9*d10)%11;
D2=D2%10;
if(d10==D1&&d11==D2){
printf("Seu CPF eh valido.");
}
else{
printf("Seu CPF eh invalido.");
}
getch();
return 0;
}


Dom Mai 03, 2009 5:13 pm
Site Admin

Data de registro: Seg Abr 20, 2009 7:03 pm
Mensagens: 8
Mensagem Re: Validando um CPF
Testem o código com o seguinte CPF fictício
84164253703
Ele satisfaz as contas do cálculo.


Dom Mai 03, 2009 6:16 pm

Data de registro: Sex Mai 01, 2009 10:29 pm
Mensagens: 2
Mensagem Re: Validando um CPF
Testei, e deu certo.
"Seu CPF eh valido."


Dom Mai 03, 2009 7:02 pm

Data de registro: Qui Mai 14, 2009 8:11 pm
Mensagens: 2
Mensagem Re: Validando um CPF
usando o 'for':

#include <stdio.h>

int n, i, f, d[10], D1, D2;

main(){
printf ("Digite seu cpf COM hifen\n");
scanf ("%d-%d", &n, &f);
d[11]=f%10;
d[10]=f/10;
for (i=9;i>=1;i--){
d[i]=n%10;
n=n/10;
}
D1=(d[1]+2*d[2]+3*d[3]+4*d[4]+5*d[5]+6*d[6]+7*d[7]+8*d[8]+9*d[9])%11;
D2=(d[2]+2*d[3]+3*d[4]+4*d[5]+5*d[6]+6*d[7]+7*d[8]+8*d[9]+9*d[10])%11;
if (D1==10) D1=0;
if (D2==10) D2=0;
if (d[10]==D1 && d[11]==D2) printf ("CPF valido");
else printf ("CPF invalido");
getch();
return 0;
}


Último pulo porInácio Alves no Sáb Ago 15, 2009 11:30 am


Sáb Ago 15, 2009 11:30 am
Mostrar mensagens anteriores:  Organizar por  
   [ 9 Mensagens ] 


Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:
Ir para:  
cron
Powered by phpBB © phpBB Group.
Designed by Vjacheslav Trushkin for Free Forums/DivisionCore.
Traduzido por brasil