//================================================================ // Nome Do Arquivo: cpf.c // File Name: cpf.c // // Descrição: Implementação do algoritmo gerador de cpf //================================================================ // Libs #include <stdio.h> #include <stdlib.h> #include <time.h> // Protótipo da função geradora de CPF int* cpf_generator(); // Função main // Main Function int main(int argc, char** argv) { int *cpf, i; // Inicia o gerador de números aleatórios srand(time(NULL)); // Gera um cpf aleatório cpf = cpf_generator(); // Imprime o cpf gerado na tela for(i = 0; i < 11; i++) { printf("%d", cpf[i]); } printf("n"); system("pause"); // Libera a memória usada para o cpf free(cpf); return 0; } // Função Geradora de CPF int* cpf_generator() { int *cpf, pesos[11], vetSoma[11], soma, resto, digito, i; // Aloca memória para o cpf cpf = (int *) malloc(sizeof(int) * 11); // Gera 9 números aleatórios for(i = 0; i < 9; i++) { cpf[i] = rand() % 10; } // Cálculo do primeiro dígito verificador // Gera os 9 pesos for(i = 0; i < 9; i++) { pesos[i] = 10 - i; } // Multiplica os valores de cada coluna for(i = 0; i < 9; i++) { vetSoma[i] = cpf[i] * pesos[i]; } // Calcula o somatório dos resultados soma = 0; for(i = 0; i < 9; i++) { soma += vetSoma[i]; } // Realiza-se a divisão inteira do resultado por 11 resto = soma % 11; // Verifica o resto da divisão if(resto < 2) { digito = 0; } else { digito = 11 - resto; } // Adiciona o 1º dígito verificador ao cpf cpf[9] = digito; // Cálculo do segundo dígito verificador // Gera os 10 pesos for(i = 0; i < 10; i++) { pesos[i] = 11 - i; } // Multiplica os valores de cada coluna for(i = 0; i < 10; i++) { vetSoma[i] = cpf[i] * pesos[i]; } // Calcula o somatório dos resultados soma = 0; for(i = 0; i < 10; i++) { soma += vetSoma[i]; } // Realiza-se a divisão inteira do resultado por 11 resto = soma % 11; // Verifica o resto da divisão if(resto < 2) { digito = 0; } else { digito = 11 - resto; } // Adiciona o 2º dígito verificador ao cpf cpf[10] = digito; return cpf; }
Algoritmo Gerador de CPF em C
Deixe um comentário