Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

quitZAUMMM

[Código] Verificador e Validador de CPF

Recommended Posts

Entaum galera achei esse programinha na net num lembro aonde, + vo deixar o nome do cara q crio no meio dos printf ai!!

 

[]'s

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
main()
{
   inicio:
   system("cls");
   fflush(stdin);
   int numero[11],soma1,soma2,i,erro,aux;
   int parte1,parte2,parte3,dig1,opc,invalido=0;
   int parte5,parte6,parte7,dig2;
   char cpf[11],resp;
   printf("*==================================================================*\n");
   printf("|___________________ VALIDADOR DE CPF's V. 1.0 ____________________|\n");
   printf("|																  |\n");
   printf("|	 Autor: Thiago C. Serrilho									|\n");
   printf("|	 E-mail: webserrilho@gmail.com								|\n");
   printf("|	 3o. Semestre - Licenciatura em Computacao					|\n");
   printf("|	 Disciplina: Linguagem de Programacao I					   |\n");
   printf("|	 Prof. Carlos Acacio										  |\n");
   printf("*==================================================================*\n\n");
   printf("*========================================*\n");
   printf("|	   O que voce deseja fazer?		 |\n");
   printf("*----------------------------------------*\n");
   printf("| 1 - Descobrir os digitos verificadores |\n");
   printf("| 2 - Verificar a validade de um CPF	 |\n");
   printf("| 3 - Finaliza o programa				|\n");
   printf("*========================================*\n");
   erro=0;
   do
   {
	  erro++;
	  if(erro>1)
	  {
		 printf("Erro: Opcao invalida!\n");
		 erro=1;
	  }
	  printf("Informe a sua opcao: ");
	  scanf("%d",&opc); fflush(stdin);
   }while(opc>3 || opc<1);
   printf("*==================================================================*\n");
   switch(opc)
   {
	  case 1:
	  {
		 //*==========================================*
		 //|		Leitura dos numeros do CPF		|
		 //*==========================================*
		 printf("Digite os 9 numeros do CPF: ",i);
		 for(i=1;i<=9;i++)
		 {
			if(i-1==3)printf(".");
			if(i-1==6)printf(".");
			cpf[i]=getche();
			aux=atoi (cpf);
			numero[i]=aux;
			cpf[i]=' '; 
		 }
		 break;
	  }
	  case 2:
	  {
		 //*==========================================*
		 //|		Leitura dos numeros do CPF		|
		 //*==========================================*
		 printf("Digite os 11 numeros do CPF: ");
		 for(i=1;i<= 11;i++)
		 {
			if(i-1==3) printf(".");
			if(i-1==6) printf(".");
			if(i-1==9) printf("-");
			cpf[i]=getche();
			numero[i]=atoi (cpf);
			cpf[i]=' '; 
		 }
		 break;
	  }
	  case 3:
	  {
		 printf("Deseja continuar no programa (s/n)? ");
		 scanf("%s",&resp);
		 if((resp=='n') || (resp=='N')) goto fim;
		 else goto inicio;
	  }
   }
   //*=========================================*
   //|	   Primeiro digito verificador	   |
   //*=========================================*
   soma1=((numero[1]*10)+
		 (numero[2]*9)+
		 (numero[3]*8)+
		 (numero[4]*7)+
		 (numero[5]*6)+
		 (numero[6]*5)+
		 (numero[7]*4)+
		 (numero[8]*3)+
		 (numero[9]*2));
   parte1=int(soma1 / 11);
   parte2=(parte1 * 11);
   parte3=(soma1 - parte2);
   dig1=(11 - parte3);
   if(dig1>9)dig1=0;
   if(opc==1)
   {
	  printf("\n*==================================================================*\n");
	  printf("Primeiro digito: %d\n",dig1);
   }
   else
   printf("\n*==================================================================*\n");
   //*=========================================*
   //|	   Segundo digito verificador		|
   //*=========================================*
   soma2=((numero[1]*11)+
		 (numero[2]*10)+
		 (numero[3]*9)+
		 (numero[4]*8)+
		 (numero[5]*7)+
		 (numero[6]*6)+
		 (numero[7]*5)+
		 (numero[8]*4)+
		 (numero[9]*3)+
		 (dig1*2));
   parte5=int(soma2 / 11);
   parte6=(parte5 * 11);
   parte7=(soma2 - parte6);
   dig2=(11 - parte7);
   if(dig2>9)dig2=0;
   if(opc==1)
   {
	  printf("Segundo digito.: %d\n",dig2);
	  printf("*==================================================================*\n");
   }
   //*==========================================*
   //|	   Impressao do numero completo	   | 
   //*==========================================*
   printf("Numero completo do CPF\n");
   for(i=1;i<=9;i++)
   {
	  printf("%d",numero[i]);//numeros do CPF
	  if(i-1==2) printf(".");
	  if(i-1==5) printf(".");
   }
   if(opc==1)
   printf("-%d%d\n",dig1,dig2);//dois últimos digitos
   if(opc==2)
   {
	  if(dig1==numero[10] && dig2==numero[11])
	  {
		 printf("-%d%d\n",numero[10],numero[11]);
		 if(opc==1)
		 printf("Numero de CPF valido\n");
	  }
	  else
	  {
		 printf("-%d%d\n",numero[10],numero[11]);
		 invalido++;
	  }
   }
   //*===============================================================================
=============================================================*
   //|	 Invalida numeros de CPF com todos os digitos iguais Ex: 111.111.111-11																 |
   //*===============================================================================
=============================================================*
		if(numero[1]==1 && numero[2]==1 && numero[3]==1 && numero[4]==1 && numero[5]==1 && numero[6]==1 && numero[7]==1 && numero[8]==1 && numero[9]==1)
   printf("Erro: Numero de CPF invalido!\n",invalido++); 
   else if(numero[1]==2 && numero[2]==2 && numero[3]==2 && numero[4]==2 && numero[5]==2 && numero[6]==2 && numero[7]==2 && numero[8]==2 && numero[9]==2)
   printf("Erro: Numero de CPF invalido!\n",invalido++);
   else if(numero[1]==3 && numero[2]==3 && numero[3]==3 && numero[4]==3 && numero[5]==3 && numero[6]==3 && numero[7]==3 && numero[8]==3 && numero[9]==3)
   printf("Erro: Numero de CPF invalido!\n",invalido++);
   else if(numero[1]==4 && numero[2]==4 && numero[3]==4 && numero[4]==4 && numero[5]==4 && numero[6]==4 && numero[7]==4 && numero[8]==4 && numero[9]==4)
   printf("Erro: Numero de CPF invalido!\n",invalido++);
   else if(numero[1]==5 && numero[2]==5 && numero[3]==5 && numero[4]==5 && numero[5]==5 && numero[6]==5 && numero[7]==5 && numero[8]==5 && numero[9]==5)
   printf("Erro: Numero de CPF invalido!\n",invalido++);
   else if(numero[1]==6 && numero[2]==6 && numero[3]==6 && numero[4]==6 && numero[5]==6 && numero[6]==6 && numero[7]==6 && numero[8]==6 && numero[9]==6)
   printf("Erro: Numero de CPF invalido!\n",invalido++);
   else if(numero[1]==7 && numero[2]==7 && numero[3]==7 && numero[4]==7 && numero[5]==7 && numero[6]==7 && numero[7]==7 && numero[8]==7 && numero[9]==7)
   printf("Erro: Numero de CPF invalido!\n",invalido++);
   else if(numero[1]==8 && numero[2]==8 && numero[3]==8 && numero[4]==8 && numero[5]==8 && numero[6]==8 && numero[7]==8 && numero[8]==8 && numero[9]==8)
   printf("Erro: Numero de CPF invalido!\n",invalido++);
   else if(numero[1]==9 && numero[2]==9 && numero[3]==9 && numero[4]==9 && numero[5]==9 && numero[6]==9 && numero[7]==9 && numero[8]==9 && numero[9]==9)
   printf("Erro: Numero de CPF invalido!\n",invalido++);
   else if(numero[1]==0 && numero[2]==0 && numero[3]==0 && numero[4]==0 && numero[5]==0 && numero[6]==0 && numero[7]==0 && numero[8]==0 && numero[9]==0)
   printf("Erro: Numero de CPF invalido!\n",invalido++);

   if(opc==2 && invalido<1)
   printf("Numero de CPF valido\n");
   //else if(opc==1 && invalido<1)
   //printf("CPF Valido\n");
   if(opc==2 && invalido>=21)
   printf("Numero de CPF invalido\n");
   if(invalido<1)
   {
	  //========================================================================*
	  //|   Diz os estados onde o CPF foi emitido baseado no 9º digito do CPF   |
	  //========================================================================*
	  printf("*==================================================================*\n");
	  printf("Informacao adicional:\n");
	  if(numero[9]==0) printf("CPF emitido no estado do RS\n");
	  if(numero[9]==1) printf("CPF emitido em um desses estados: DF-GO-MS-MT-TO\n");
	  if(numero[9]==2) printf("CPF emitido em um desses estados: AC-AM-AP-PA-RO-RR\n");
	  if(numero[9]==3) printf("CPF emitido em um desses estados: CE-MA-PI\n");
	  if(numero[9]==4) printf("CPF emitido em um desses estados: AL-PB-PE-RN\n");
	  if(numero[9]==5) printf("CPF emitido em um desses estados: BA-SE\n");
	  if(numero[9]==6) printf("CPF emitido no estado de MG\n");
	  if(numero[9]==7) printf("CPF emitido em um desses estados: ES-RJ\n");
	  if(numero[9]==8) printf("CPF emitido no estado de SP\n");
	  if(numero[9]==9) printf("CPF emitido em um desses estados: PR-SC\n");
   }
   printf("*==================================================================*\n");
   printf("Pressione \"enter\" para continuar...");
   getchar();
   goto inicio;
   fim:;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está um código bem legal, a unica coisa q naum gostei dele são os gotos, bom ai estão corretos + eu sempre evito usar goto pq c você naum souber usar ele bem, acaba com seu programa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow, kra, bem legal esse código aih, hein!

Poxa, infelizmente estou meio sem tempo para dar uma estudada mais profunda...alguém sabe onde eu posso encontrar algum lugar explicando validação de CPFs?

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.