[source] gerador de cpf

Started by nizep, 15 de June , 2007, 03:49:26 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

nizep

dps do verificador de cpf

agora o gerador

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

main() {
       
int cpf[10], i, opcao;


while (true) {
printf("\n\nGerador de cpf\n\n(1)Gerar\n(2)Sair\n");       
scanf("%d",&opcao);
if (opcao==1) {
   srand(time(NULL));
   cpf[9] = 0;
   cpf[10] = 0;             
   for (i=0; i<=8; i++) {
       cpf[i] = rand() %10;
       cpf[9] = (cpf[i]*(i+1))+cpf[9];
       printf("%d", cpf[i]);
       if (i==2||i==5)
          printf(".");
       if (i==8)
          printf("-");
   }
   for (i=1; i<=9; i++)
       cpf[10] = (cpf[i]*i)+cpf[10];
   cpf [9] = cpf[9]%11;
   cpf[10] = cpf[10]%11;   
   if (cpf[9]==10)
      cpf[9] = 0;
   if (cpf[10]==10)
      cpf[10] = 0;
   printf("%d%d",cpf[9], cpf[10]);         
}   
else
    if (opcao==2)
       break;
    else
        printf("Opcao invalida!");                                             
}
}       
       

nizep

pow tava testandu uns cpfs aki pra ve si u prog tava 100% e achei um erro

tem ke checar se o 1. digito eh maior que 10 antes de gerar o 2. digito

no caso

if (cpf[9]==10)
      cpf[9] = 0;

vem antes de

for (i=1; i<=9; i++)
       cpf[10] = (cpf*i)+cpf[10];


tae o programa 100% agora

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

main() {
       
int cpf[10], i, opcao;


while (true) {
printf("\n\nGerador de cpf\n\n(1)Gerar\n(2)Sair\n");       
scanf("%d",&opcao);
if (opcao==1) {
   srand(time(NULL));
   cpf[9] = 0;
   cpf[10] = 0;             
   for (i=0; i<=8; i++) {
       cpf[i] = rand() %10;
       cpf[9] = (cpf[i]*(i+1))+cpf[9];
       printf("%d", cpf[i]);
       if (i==2||i==5)
          printf(".");
   }
   printf("-");
   if (cpf[9]==10)
      cpf[9] = 0;
   for (i=1; i<=9; i++)
       cpf[10] = (cpf[i]*i)+cpf[10];
   cpf [9] = cpf[9]%11;
   cpf[10] = cpf[10]%11;   
   if (cpf[10]==10)
      cpf[10] = 0;
   printf("%d%d",cpf[9], cpf[10]);         
}   
else
    if (opcao==2)
       break;
    else
        printf("Opcao invalida!");                                             
}
}       
       

nizep

bom apesar de ngm ter comentado o topico

volto aki pra corrigir outro erro no programa... outra vez envolvendo o 1. digito

no caso ele estava perguntando se o resto da divisao por 11 é igual a 10 antes mesmo de dividir...  :P

codigo corrigido:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

main() {
       
int cpf[10], i, opcao;


while (true) {
printf("\n\nGerador de cpf\n\n(1)Gerar\n(2)Sair\n");       
scanf("%d",&opcao);
if (opcao==1) {
   srand(time(NULL));
   cpf[9] = 0;
   cpf[10] = 0;             
   for (i=0; i<=8; i++) {
       cpf[i] = rand() %10;
       cpf[9] = (cpf[i]*(i+1))+cpf[9];
       printf("%d", cpf[i]);
       if (i==2||i==5)
          printf(".");
   }
   printf("-");
   cpf [9] = cpf[9]%11;
   if (cpf[9]==10)
      cpf[9] = 0;
   for (i=1; i<=9; i++)
       cpf[10] = (cpf[i]*i)+cpf[10];
   cpf[10] = cpf[10]%11;   
   if (cpf[10]==10)
      cpf[10] = 0;
   printf("%d%d",cpf[9], cpf[10]);         
}   
else
    if (opcao==2)
       break;
    else
        printf("Opcao invalida!");                                             
}
}