//================================================================ // Nome Do Arquivo: cnpj.c // File Name: cnpj.c // // Descrição: Implementação do algoritmo gerador de cnpj //================================================================ // Protótipo da função geradora de CNPJ int* cnpj_generator(); // Libs #include <stdio.h> #include <stdlib.h> #include <time.h> // Função main // Main Function int main(int argc, char** argv) { int *cnpj, i; // Inicia o gerador de números aleatórios srand(time(NULL)); // Gera um cpf aleatório cnpj = cnpj_generator(); // Imprime o cnpj gerado na tela for(i = 0; i < 14; i++) { printf("%d", cnpj[i]); } printf("n"); system("pause"); // Libera a memória usada para o cnpj free(cnpj); return 0; } // Função Geradora de CNPJ int* cnpj_generator() { int *cnpj, pesos[14], vetSoma[14], soma, resto, digito, i; // Aloca memória para o cnpj cnpj = (int *) malloc(sizeof(int) * 14); // Gera 12 números aleatórios for(i = 0; i < 12; i++) { cnpj[i] = rand() % 10; } // Cálculo do primeiro dígito verificador // Gera os 12 pesos for(i = 0; i < 4; i++) { pesos[i] = 5 - i; } for(i = 4; i< 12; i++) { pesos[i] = 13 - i; } // Multiplica os valores de cada coluna for(i = 0; i < 12; i++) { vetSoma[i] = cnpj[i] * pesos[i]; } // Calcula o somatório dos resultados soma = 0; for(i = 0; i < 12; 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 cnpj[12] = digito; // Cálculo do segundo dígito verificador // Gera os 13 pesos for(i = 0; i < 5; i++) { pesos[i] = 6 - i; } for(i = 5; i< 13; i++) { pesos[i] = 14 - i; } // Multiplica os valores de cada coluna for(i = 0; i < 13; i++) { vetSoma[i] = cnpj[i] * pesos[i]; } // Calcula o somatório dos resultados soma = 0; for(i = 0; i < 13; 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 cnpj[13] = digito; return cnpj; }
Algoritmo Gerador de CNPJ em C
Deixe um comentário