Informática, perguntado por alejohoyosgomez1451, 1 ano atrás

Boa tarde pessoal, Alguém pode me ajudar com a questão abaixo: Agradeço muito! O CPF é o número usado pela Receita Federal do Brasil para identificar os Contribuintes Pessoas Físicas. O CPF é composto por 11 algarismos. Destes 11 algarismos os dois últimos são usados para verificar se os primeiros 9 foram digitados corretamente. Eles são chamados de algarismos verificadores. Por exemplo, considere o CPF exemplo 123.456.789-09. Este CPF na realidade é 123 456 789, os algarismos 0 e 9 servem para que os programas da Receita Federal verifiquem se os 9 primeiros estão corretos. Os algarismos 0 e 9 são gerados automaticamente pelos computadores da Receita quando alguém se inscreve como contribuinte. O algoritmo de geração dos dois últimos algarismos é descrito a seguir. Para o primeiro dígito verificador, o 0, no nosso exemplo, o algoritmo é o seguinte: multiplique o primeiro algarismo do CPF por 10, o segundo por 9, e assim sucessivamente até o nono algarismo do código e some todos estes resultados. Neste exemplo teríamos, soma1 = (1*10) + (2*9) + (3*8) + ... + (9*2) Calcule o resto da divisão inteira por 11 desta soma1. Se este resto for 0 ou 1 então o algarismo do primeiro dígito verificador é 0 caso contrário o algarismo é o resultado da subtração (11 – resto). Para o segundo dígito verificador, no nosso caso o 9, o algoritmo é o seguinte: multiplique o primeiro algarismo por 11, o segundo por 10, e assim sucessivamente até o nono algarismo do código e some todos estes resultados. Neste exemplo teríamos soma2 = (1*11) + (2*10) + (3*9) + ... + (9*3) Some este resultado ao dobro do primeiro dígito verificador que foi calculado (valor = soma2 + 2 * digito1) . Calcule o resto da divisão inteira por 11 deste valor. Se este resto for 0 ou 1 então o algarismo é 0 caso contrário o algarismo é o resultado da subtração (11 – resto). Escreva um algoritmo que leia todos os algarismos de um CPF e imprima se ele é valido ou não. Considere que o usuário irá digitar os algarismos do CPF separados por um espaço em branco. Esta maneira de fornecer o CPF não é comum, mas no nosso caso irá facilitar o processamento. Exemplos de uso do programa. Exemplo 1: Entre com o CPF 1 2 3 4 5 6 7 8 9 0 9 CPF válido. Exemplo 2: Entre com o CPF 1 2 3 4 5 6 7 8 9 9 9 CPF inválido

Soluções para a tarefa

Respondido por bokomoko
2
Eu daria assim

dimension cpf[11) de inteiros
soma = 0 

para i= 1 até 9 passo 1 faça
    leia(cpf[i])
    soma = soma + cpf[i] * (11-i) 
fim-para

digito1 = resto(soma,11) 
se digito1 <= 1 entao
     digito1 = 0 
senao
     digito1 = 11- digito
fim-se

soma = 0 
para i = 1 até 9 passo 1 faça
    soma = soma + cpf[i] * (12-i)
fim-para

digito2 = resto( soma + digito1*2,11) 
se digito2 <= 1 entao
     digito2 = 0 
senao
     digito2 = 11- digito
fim-se

escreva "Digito 1", digito1
escreva "digito 2", digito2



bokomoko: Aqui tem um trecho de um código escrito em python para fazer essa verificação. Experimente https://repl.it/N4ws/18
Perguntas interessantes