Valida o CPF.

  



Esconder código-fonte

/*
  Name: Aramis K Kaminski
  Copyright: Aramis K Kaminski
  Author: ramis K Kaminski
  Date: 16/04/08 23:02
  Description: Função valida CPF
*/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>

////////////////////////////////////////////////////////////////////////////////

///////////////////////////////Declara Funções//////////////////////////////////

int validaCPF(char cpf[11]);

//////////////////////////////FIM de Declaração/////////////////////////////////

/////////////////////////////Inicio do MAIN/////////////////////////////////////

int main()

{
 char cpf[11];
 int i,validade;

 printf("Digite o CPF a ser validado : ");
 for(i=0; i<11; i++)
 {
 
  cpf[i]=getche(); 
  if(i==8)
  {
   printf("-");
  }
 }

 validade=validaCPF(cpf);
 
 if(validade==1)
  printf("\tCPF DIGITADO E VALIDO\n\n"); else
   printf("\tCPF DIGITADO NAO E VALIDO\n\n");

 system("pause");
 return 0;
}

//////////////////////////////FIM do MAIN///////////////////////////////////////

//////////////////////////Inicio da Função validaCPF////////////////////////////

/*CONVERTE DE CHAR PARA INT*/

int validaCPF(char cpf[11])

{int i=0,k,j,validade,soma=0,cpf2[11],cpf3[9],cpf2_1[10],cpfdv[11];
 char aux[1];

 for(i=0; i<11; i++)
  {
   aux[0]=cpf[i];
   cpf2[i]=atoi(aux);
  }
  printf("\n\n");
//////////////////////////////////////////////////////////

/*IMPRIMI O CPF DIGITADO*/

 printf("O CPF digitado foi : ");

 for(i=0; i<11; i++)
  {
   printf("%d",cpf2[i]);
   if(i==8)
    {
     printf("-");
    }
  }
  printf("\n\n");
//////////////////////////////////////////////////////////  

/*FAZ O CALCULO DO PRIMEIRO DV*/

   i=0; 
    for(k=10; k>1; k--)
    {
      cpf3[i]=cpf2[i]*k;
      soma=soma+cpf3[i]; 
      
      
      i++;
    }
 
 soma=soma%11;
 soma=11-soma;

////////////////////////////////////////////////////////////
  for(i=0; i<9; i++)
 {
    cpf2_1[i]=cpf2[i];
 }
///////////////////////////////////////////////////////////
 cpf2_1[9]=soma;
 soma=0;
///////////////////////////////////////////////////////////

/*FAZ O CALCULO DO SEGUNDO DV*/

 i=0;
   for(j=11; j>1; j-- )
   {
      cpf3[i]=cpf2_1[i]*k;
      soma=soma+cpf3[i];
      i++;
   }
 
 soma=soma%11;
 soma=11-soma;
 
 cpf2_1[10]=soma;
 
/////////////////////////////////////////////////////////////

/*VERIFICA SE O CPF NAO TEM NUMEROS REPITIDOS*/
int num=0,num1=0;

for(i=0; i<9; i++)
 {
         for(num1=1; num1<12; num1++)
         {
          for(num=0; num<11; num++)
           {
            cpfdv[num]=num1;
          
             if(cpf2[0] == cpfdv[0] && cpf2[1] == cpfdv[1]) 
            
              if(cpf2[2] == cpfdv[2] && cpf2[3] == cpfdv[3])
                        
               if(cpf2[3] == cpfdv[3] && cpf2[4] == cpfdv[4]) 
               
                if(cpf2[5] == cpfdv[5] && cpf2[6] == cpfdv[6]) 
               
                 if(cpf2[7] == cpfdv[7] && cpf2[8] == cpfdv[8]) 
                 
                  if(cpf2[9] == cpfdv[9] && cpf2[10] == cpfdv[10])  
                   
                              
             return (validade=0);
           }
         }
         
                  
         
 }
 

/////////////////////////////////////////////////////////////// 

/* VERIFICA OS DV E RETORNA 0 OU 1*/ 

  if(cpf2[9] == cpf2_1[9] && cpf2[10] == cpf2_1[10])
  validade=1; else
   validade=0;
 return (validade);
 

}

Scripts recomendados

Cálculo da circunferência de um círculo

Calcular Fatorial

C++ CGI

Média de alturas

Pilha com alocação estática


  

Comentários
[1] Comentário enviado por f_Candido em 01/02/2009 - 03:04h

Olá Rafael,
Bom, seu código tem algumas inconsistências: Ele usa a lib conio.h. Essa lib não é padrão. Logo, ela não irá funcionar em ambiente Unix. Como sugestão, fica a ncurses, que supre e bem, as funções pertinentes a conio.h.

Abraços


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts