#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:
{
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:
{
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;
}
}
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");
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");
}
printf("Numero completo do CPF\n");
for(i=1;i<=9;i++)
{
printf("%d",numero[i]); if(i-1==2) printf(".");
if(i-1==5) printf(".");
}
if(opc==1)
printf("-%d%d\n",dig1,dig2); 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++;
}
}
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");
if(opc==2 && invalido>=21)
printf("Numero de CPF invalido\n");
if(invalido<1)
{
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:;
}