Ir para conteúdo

POWERED BY:

Arquivado

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

Antharaz

[Código] Gerador de CPF/CNPJ

Recommended Posts

Bem...

 

Não sei se vai ajudar alguém mas está aí...

 

Fiz o programa com intuito de testar meu conhecimento sobre tipo bool e criação de novas funções.

 

Source:

/*  Nome: Gerador de cpf/cnpj/titulo eleitoral/cgc  
Autor: Jorge Almeida Miguel   
Date: 31/08/09 18:01  
Descrição: Programa feito 100% por Jorge Almeida Miguel.
Feito apenas para teste de conhecimento.  
O autor não se responsabiliza pelo uso inapropriado do mesmo
*/
#include <stdio.h>            // para usar o printf e o scanf
#include <time.h>             // para usar o srand(time(NULL)) e gerar verdadeiros numeros aleatorios
#include <windows.h>          // para o gettickcount
#include <stdbool.h>          // para usar



int a,b,c,d,e,f,g,h,i,j,k,l,m,n,w,q; // tive que declarar globais porque uso elas em mais de uma função

int usorand()
{
     a = rand()%10;         
     b = rand()%10;         
     c = rand()%10;         
     d = rand()%10;         
     e = rand()%10;         
     f = rand()%10;         
     g = rand()%10;         
     h = rand()%10;         
     i = rand()%10;         
     j = rand()%10;         
     k = rand()%10;         
     l = rand()%10;


}

int cpf()  // PARTE RESPONSÁVEL POR GERAR CPFs  

{
     q = 1;
     printf ("\n\nQuantos CPFs deseja gerar?\n\n");      
     scanf ("%i%*c", &w);
     while (q <= w)
     {
           usorand();
           l = a*10+b*9+c*8+d*7+e*6+f*5+g*4+h*3+i*2;
           j = l%11;               
           if (j <= 1)         
           j = 0;         
           else         
           j = 11 - j;               
           k = a*11+b*10+c*9+d*8+e*7+f*6+g*5+h*4+i*3+j*2;         
           k = k%11;                  
             if (k <= 1)            
             k = 0;            
             else            
             k = 11 - k;                  
             printf ("\n\nCPF: %i%i%i.%i%i%i.%i%i%i-%i%i", a,b,c,d,e,f,g,h,i,j,k);      
             q = q +1;
     }
     q = 1;
}






int cnpj()  // PARTE RESPONSÁVEL POR GERAR CNPJ  

{
       printf ("\n\nQuantos CNPJs deseja gerar?\n\n");      
       scanf ("%i%*c", &w);
       while (q <= w)
       {
             usorand();
             m = a*5+b*4+c*3+d*2+e*9+f*8+g*7+h*6+i*5+j*4+k*3+l*2;            
             m = m%11;                        
             if (m <= 1)            
             m = 0;            
             else            
             m = 11 - m;                                    
             n = a*6+b*5+c*4+d*3+e*2+f*9+g*8+h*7+i*6+j*5+k*4+l*3+m*2;            
             n = n%11;            
             if (n <= 1)            
             n = 0;            
             else            
             n = 11 - n;                            
             printf ("\n\nCNPJ: %i%i.%i%i%i.%i%i%i/%i%i%i%i-%i%i", a,b,c,d,e,f,g,h,i,j,k,l,m,n);            
             q = q+1;
       }
       q = 1;
}












int main()
{
      char C,r;
      bool u2;
      srand(time(NULL));
      printf("Programa feito totalmente por Jorge Almeida Miguel.\nFoi feito apenas para teste ");
      printf("de conhecimento e o autor não se responsabiliza pelo uso inapropriado do mesmo.\n\n\n\n\n\n");
      r = '2';
      u2 = true;
      while (r == '2')
      {
            printf ("\n\nO que deseja gerar? [1-CPF/2-CNPJ(CGC)]\n\n");
            scanf ("%c%*c", &C);         
            if (C == '1')
            {
               cpf();
               u2 = true;
            }
            else
            if (C == '2')    
            {
               cnpj();
               u2 = true;
               }
            else
            {
                printf("\n\nPor favor, coloque o numero das opções desejadas. ;D");
                u2=false;
            }
            if (u2==true)
            {
                        printf("\n\n\nDeseja sair do programa? [1-sim/2-nao]\n\n");
                        scanf("%c%*c",&r);
            }
      }    // fim do while
      printf ("\n\n\nGrato pelo uso do programa!!!\n\n");
      printf ("Qualquer duvida/sugestao/critica mande um e-mail ou me adicione no msn:\njorge_do_colegio@hotmail.com\n\n\n\n\n");
      int t = GetTickCount(); // t recebe o início da contagem
      while(t + 4000 > GetTickCount()); // tipo um timer para esperar que a contagem aumente até t + 4000 milisegundos(4s)
      return 0;
}

Agradecimentos: quitZAUMMM por ter paciência(muita =x) e tirar algumas dúvidas... ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu vi um erro só agora no code... ele não entra na pergunta se quer sair...

 

já arrumei!

Compartilhar este post


Link para o post
Compartilhar em outros sites

=D

 

gostei!

Mas posso dar uma sugestão?

 

Ao invés de declarar aquele monte de variáveis globais, por que não criar uma struct, e passar ela para as funções?

Por exemplo:

struct CPF_t
{
    int a, b, c, d, e, f, g, h, i, j, k, l;
};

int Inicializa(struct CPF_t &cpf)
{
    cpf.a = rand()%10;
    cpf.b = rand()%10;
    ....
    cpf.l = rand()%10;

}

...
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar de conhecer o struct, não o usei porque queria fazer de acordo com o que o professor já ensinou + ou -...

 

^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

É cara isso ae http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Só comece a melhorar o nome das variáveis ^^

 

[]s

 

---

Título Editado:

 

Gerador de CPF/CNPJ http://forum.imasters.com.br/public/style_emoticons/default/seta.gif [Código] Gerador de CPF/CNPJ

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.