Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Desafio para os fortes
- Dígito verificador ou algarismo de controle é um mecanismo de autenticação utilizado
- para verificar a validade e a autenticidade de um valor numérico, evitando dessa forma
- fraudes ou erros de transmissão ou digitação. Consiste em um ou mais algarismos
- acrescentados ao valor original e calculados a partir deste através de um determinado
- algoritmo. Números de documentos de identificação, de matrícula, cartões de crédito e
- quaisquer outros códigos numéricos que necessitem de maior segurança utilizam dígitos
- verificadores. Esse trabalho consiste em calcular o dígito verificador do CPF. Seu
- programa deve receber um cpf sem o dígito verificador do usuário e imprimir o CPF com
- o dígito verificador. Você pode usar o seu CPF e de parentes e colegas para testar o
- programa. A seguir, as regras para o cálculo do dígito verificador são definidas através
- de um exemplo. É utilizado como exemplo o número: 123456789.
- Calcule a soma dos produtos dos nove dígitos utilizando peso 2 para unidade, peso 3 para
- dezena, peso 4 para centena e assim sucessivamente.
- Exemplo: 9*2+8*3+7*4+6*5+5*6+4*7+3*8+2*9+1*10 = 210.
- A dezena do número verificador é 0 caso o resto da divisão por 11 da soma dos produtos
- seja 0 ou 1; caso contrário a dezena corresponde a subtrair de 11 o resto da divisão
- por 11 da soma dos produtos.
- Calcule a soma dos produtos dos dez dígitos, onde o dígito menos significativo passa a
- ser a dezena dos dígitos verificadores, utilizando os seguintes pesos:
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11;
- A unidade do número verificador é 0 caso o resto da divisão da soma dos produtos seja 0
- ou 1; caso contrário a unidade corresponde a 11 menos o resto da divisão por 11 da soma
- dos produtos. Exemplo: resto da divisão de 255 por 11 é 2 então a unidade do número
- verificador é 11-2=9
- Dica: para resolver esse problema, você precisa aprender três conceitos que ainda não
- foram ensinados em sala de aula: leitura de dados a partir do teclado, resto da divisão
- entre dois números, e processamento condicional. Para o primeiro conceito, procure saber
- como funciona a função scanf, que é da biblioteca stdio.h. Para o segundo conceito,
- procure saber como funciona o operador %, ou mod. Por fim, e mais difícil que os conceitos
- anteriores, procure saber como funciona o comando if e else da linguagem C. O aprendizado
- de uma linguagem depende muito da sua iniciativa de correr atrás das soluções.
- Esse exercício é uma forma de incentivar a autodidática.
- */
- #include <stdio.h>
- #include <math.h>
- void main() {
- long cpf, soma_p, d, u, r, cpf0, cpf1, cpf2, cpf3, cpf4, cpf5, cpf6, cpf7, cpf8, t1, t2;
- printf("Informe os 9 primeiros digitos do seu CPF: ");
- scanf("%ld", &cpf);
- if(cpf < 100000000){
- cpf0 = 0;
- cpf1 = cpf/10000000;
- cpf2 = (cpf/1000000)%10;
- } else {
- cpf0 = cpf/100000000;
- cpf1 = (cpf/10000000)%10;
- cpf2 = (cpf/1000000)%10;
- }
- if(cpf < 10000000){
- cpf0 = 0;
- cpf1 = 0;
- cpf2 = cpf/1000000;
- } else {
- cpf0 = cpf/100000000;
- cpf1 = (cpf/10000000)%10;
- cpf2 = (cpf/1000000)%10;
- }
- cpf3 = (cpf/100000)%10;
- cpf4 = (cpf/10000)%10;
- cpf5 = (cpf/1000)%10;
- cpf6 = (cpf/100)%10;
- cpf7 = (cpf/10)%10;
- cpf8 = cpf%10;
- soma_p = (cpf8*2)+(cpf7*3)+(cpf6*4)+(cpf5*5)+(cpf4*6)+(cpf3*7)+(cpf2*8)+(cpf1*9)+(cpf0*10);
- r = soma_p%11;
- if(r == 0 || r == 1){
- d = 0;
- } else {
- d = 11 - r;
- }
- soma_p = (d*2)+(cpf8*3)+(cpf7*4)+(cpf6*5)+(cpf5*6)+(cpf4*7)+(cpf3*8)+(cpf2*9)+(cpf1*10)+(cpf0*11);;
- r = soma_p%11;
- if(r == 0 || r == 1){
- u = 0;
- } else {
- u = 11 - r;
- }
- printf("\nO CPF completo com digito verificador e: %ld%ld%ld.%ld%ld%ld.%ld%ld%ld-%ld%ld", cpf0, cpf1, cpf2, cpf3, cpf4, cpf5, cpf6, cpf7, cpf8, d, u);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement