sexta-feira, 13 de outubro de 2017

Verificador de cpf - Linguagem C

Já que criamos um didático gerador de cpfs válidos,
Acho muito justo também criarmos um verificador
De cpfs, isto é muito correto, precisamos saber se
Nossos cpfs criados são válidos, por isto ser tão justo
Criei este programa que faz validação de um cpf inserido
Em sua entrada de dados, acompanhe nas imagens primeiro:

Veja abaixo algumas imagens do programa em execução:





Veja abaixo o código do programa:

#include <stdio.h>
#include <conio.h>
int cpf;
int Restr_caracteres ( char num [ 4 ] ) {
     int i, a = 0;
     a = strlen ( num );
     for ( i = 0; i < a; i++ ) {
         if ( num [ i ] < '0' || num [ i ] > '9' )
              return 0;
     }
     return 1;
}
void Verifica_Cpf ( ) {
     textcolor ( LIGHTRED );
     gotoxy ( 23, 3 );
     printf ( "VERIFICADOR DE CPF" );
     textcolor ( LIGHTBLUE );
     gotoxy ( 15, 5 );
     printf ( "Digite um cpf válido => " );
     if ( ( cpf == 11 ) ) {
         textcolor ( LIGHTRED );
         printf ( "%d", cpf );
     }
}
void Pausa ( ) {
     Sleep ( 400 );
     textcolor ( LIGHTRED );
     gotoxy ( 20, 22 );
     printf ( "PRESSIONE QUALQUER TECLA" );
     getche ( );
}
void Janela ( ) {
     int n, c;
     c = 0;
     for ( n = 2; n <= 24; n++ )
         for ( c = 3; c <= 63; c++ ) {
              gotoxy ( c, n );
              textbackground ( WHITE );
              printf ( " " );
         }
}
int main ( ) {
     system ( "title VERIFICADOR DE CPF" );
     int Vet_cpf [ 12 ];
     int Vet_cpf_2 [ 12 ];
     int Vet_cpf_3 [ 12 ];
     int val_cpf [ 10 ] = { 10, 9, 8, 7, 6, 5, 4, 3, 2 };
     int val_cpf_2 [ 11 ] = { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
     char c_pf [ 20 ];
     int erro = 0;
     do {
         int a = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, l = 0, o = 0,
                   u = 0, cont = 0;
         do {
              Janela ( );
              Verifica_Cpf ( );
              if ( erro == 1 ) {
                   Verifica_Cpf ( );
              }
              textcolor ( LIGHTRED );
              gets ( c_pf );
           ////////////////////////////////////////////////////////////////////
              cont = 0;
              for ( i = 0; c_pf [ i ] != '\0'; i = i + 1 ) {
                   if ( c_pf [ i ] )
                        cont = cont + 1;
              }
           ////////////////////////////////////////////////////////////////////
              if ( Restr_caracteres ( c_pf ) == 0 ) {
                   textcolor ( LIGHTBLUE );
                   gotoxy ( 20, 7 );
                   printf ( "Voce digitou ==> " );
                   textcolor ( LIGHTRED );
                   printf ( "%s", c_pf );
                   textcolor ( BLACK );
                   gotoxy ( 20, 9 );
                   printf ( "\aIsto não é um cpf válido !" );
                   Pausa ( );
                   erro = 1;
                   continue;
              }
              if ( cont < 11 || cont > 11 ) {
                   textcolor ( LIGHTBLUE );
                   gotoxy ( 20, 7 );
                   printf ( "\aO cpf só pode ter " );
                   textcolor ( LIGHTRED );
                   printf ( "11 " );
                   textcolor ( LIGHTBLUE );
                   printf ( "números " );
                   Pausa ( );
                   erro = 1;
                   continue;
              }
              break;
         } while ( ( cont < 11 || cont > 11 ) );
     ////////////////////////////////////////////////////////////////////////
         textcolor ( LIGHTBLUE );
         gotoxy ( 15, 7 );
         printf ( "Ao lado o cpf informado => " );
         textcolor ( LIGHTRED );
         a = 0;
         for ( i = 0; i < 12; i++ ) {
              if ( i == 3 )
                   printf ( "." );
              if ( i == 6 )
                   printf ( "." );
              if ( i == 9 )
                   printf ( "-" );
              printf ( "%c", c_pf [ i ] );
         }
         //Convertemos o vetor de char em inteiro
         while ( c_pf [ a ] != '\0' ) {
              Vet_cpf [ a ] = c_pf [ a ] - '0';
              a++;
         }
         o = Vet_cpf [ 9 ];
         u = Vet_cpf [ 10 ];
         for ( i = 0; i < 9; i++ ) {
              Vet_cpf_2 [ i ] = Vet_cpf [ i ] * val_cpf [ i ];
              e = e += Vet_cpf_2 [ i ];
         }
         f = e % 11;
         g = 11 - f;
         if ( g > 9 )
              g = 0;
         Vet_cpf [ 9 ] = g;
         for ( i = 0; i < 10; i++ ) {
              Vet_cpf_3 [ i ] = Vet_cpf [ i ] * val_cpf_2 [ i ];
              h = h += Vet_cpf_3 [ i ];
         }
         j = h % 11;
         l = 11 - j;
         if ( l > 9 )
              l = 0;
         textcolor ( LIGHTRED );
         gotoxy ( 15, 9 );
         if ( g == o && l == u )
              printf ( "O cpf é válido" );
         else printf ( "O cpf não é válido" );
         Pausa ( );
     } while ( 1 );
}


Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.