Estou tentando criar um programa em C para descobrir o dígito verificador do CPF. Mas, o programa não funciona. Aparentemente todos os dados estão corretos, mas quando o executo as operações matematicas que eu mandei fazer não ocorrem do jeito esperado, dando um resultado diferente do ideal. Segue abaixo as instruções para descobrir os digitos verificadores e posteriormente as minhas linhas de códigos, estou programando no Code Blocks, conto com a ajuda de vocês. Obrigado.
Regras para o cálculo dos dígitos verificadores do CPF É utilizado como exemplo o número: 123456789.
Calcule a soma dos produtos dos nove digitos utilizando peso dois 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 contrario a dezena corresponde a subtrair de 11 o resto da divisão por 11 da soma dos produtos. Exemplo:
resto da divisão de 210 por 11 é 1 então a dezena do número verificador é 0.
Calcule a soma dos produtos dos dez digitos, onde o digito menos significativo passa a ser a dezena dos digitos verificadores, utilizando os seguintes pesos: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11; Exemplo:
2*0+3*9+4*8+5*7+6*6+7*5+8*4+9*3+10*2+11*1=255.
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.
Pergunta
hugozanini
Estou tentando criar um programa em C para descobrir o dígito verificador do CPF. Mas, o programa não funciona. Aparentemente todos os dados estão corretos, mas quando o executo as operações matematicas que eu mandei fazer não ocorrem do jeito esperado, dando um resultado diferente do ideal.
Segue abaixo as instruções para descobrir os digitos verificadores e posteriormente as minhas linhas de códigos, estou programando no Code Blocks, conto com a ajuda de vocês.
Obrigado.
Regras para o cálculo dos dígitos verificadores do CPF
É utilizado como exemplo o número: 123456789.
9*2+8*3+7*4+6*5+5*6+4*7+3*8+2*9+1*10 = 210
resto da divisão de 210 por 11 é 1 então a dezena do número verificador é 0.
2*0+3*9+4*8+5*7+6*6+7*5+8*4+9*3+10*2+11*1=255.
resto da divisão de 255 por 11 é 2 então a unidade do número verificador é 11-2=9.
--> PROGRAMA
#include <stdio.h>
#include <stdlib.h>
int main()
{
int somaeprod;
int resultado;
int mult2;
int mult3;
int mult4;
int mult5;
printf("Forneca os 9 digitos do CPF:");
char d1,d2,d3,d4,d5,d6,d7,d8,d9;
scanf("%c%c%c%c%c%c%c%c%c",&d9,&d8,&d7,&d6,&d5,&d4,&d3,&d2,&d1);
somaeprod= (d1*2)+(d2*3)+(d3*4)+(d4*5)+(d5*6)+(d6*7)+(d7*8)+(d8*9)+(d9*10);
resultado= somaeprod%11;
if (resultado <2){
mult2= (resultado*2)+(d1*3)+(d2*4)+(d3*5)+(d4*6)+(d5*7)+(d6*8)+(d7*9)+(d8*10)+(d9*11);
mult3= mult2%11;
if (mult3 <2){
printf("%c%c%c%c%c%c%c%c%c %d%d",d9,d8,d7,d6,d5,d4,d3,d2,d1, resultado, mult3); }
else {
mult4= 11-mult3;
printf("%c%c%c%c%c%c%c%c%c %d%d",d9,d8,d7,d6,d5,d4,d3,d2,d1, resultado, mult4);
}
}
else {
mult2= 11-resultado;
mult3= (2*mult2)+(3*d1)+(4*d2)+(5*d3)+(6*d4)+(7*d5)+(8*d6)+(9*d7)+(10*d8)+(11*d9);
mult4 = mult3%11;
if ( mult4<2 ) {
printf("%c%c%c%c%c%c%c%c%c %d%d",d9,d8,d7,d6,d5,d4,d3,d2,d1, mult2, mult4);
}
else{
mult5= 11-mult4;
printf ("%c%c%c%c%c%c%c%c%c %d%d",d9,d8,d7,d6,d5,d4,d3,d2,d1, mult2, mult5);
}}
system("pause");
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.