Manipulação de caracteres
C
O exercício é o seguinte:
Desenvolva um subprograma para validação de CPF (Cadastro de Pessoas Físicas): desenvolva um
algoritmo que dado um número de CPF, informado pelo usuário como uma cadeia de caracteres, ve-
rifique se é válido e imprima a resposta na tela. A cadeia de caracteres digitada conterá pontos e traço
conforme exemplo. char cpf[14]=“529.982.247-25”;
Para verificar se um CPF é válido deve-se analisar os 2 (dois) últimos dígitos de acordo com alguns
cálculos realizados com os demais números. Veja a seguir o cálculo para o exemplo:
• Verificação do primeiro dígito:
Primeiro: multiplica-se os 9 (nove) primeiros dígitos pela sequência decrescente de números intei-
ros a partir de 10 (dez).
10 9 8 7 6 5 4 3 2
* * * * * * * * *
5 2 9 9 8 2 2 4 7
50 + 18 + 72 + 63 + 48 + 10 + 8 + 12 + 14 = 295
Segundo: multiplica-se o resultado por 10 (dez).
295 ∗ 10 = 2950
Terceiro: faz-se a divisão do resultado por 11 (onze) e pega-se o valor do resto da divisão.
2950 % 11 = 2
++Caso o resultado do resto for maior que 10 (dez), então considera-se como resultado o valor 0
(zero).
• Verificação do segundo dígito:
Primeiro: multiplica-se os 10 (dez) primeiros dígitos pela sequência decrescente de números intei-
ros a partir de 11 (onze).
11 10 9 8 7 6 5 4 3 2
* * * * * * * * * *
5 2 9 9 8 2 2 4 7 2
55 + 20 + 81 + 72 + 56 + 12 + 10 + 16 + 21 + 4 = 347
Segundo: multiplica-se o resultado por 10 (dez).
347 ∗ 10 = 3470
Terceiro: faz-se a divisão do resultado por 11 (onze) e pega-se o valor do resto da divisão.
3470 % 11 = 5
++Caso o resultado do resto for maior que 10 (dez), então considera-se como resultado o valor 0
(zero).
Desta forma temos como resposta os dígitos “25”, os quais correspondem aos dígitos do CPF dado
como exemplo: “529.982.247-25”.
OBS: Você pode usar as funções int tam = strlen(texto), int num = atoi(texto) {converte ca-
deia de caracteres para inteiro} e int valor = isdigit(char) {se valor==0 o char é um número
entre 0 e 9}. Todas das bibliotecas #include e #include
Minha dúvida é a seguinte: eu passo o cpf pra função de validação como uma string ou eu já faço a conversão para inteiro? Essa função atoi não entendi como funciona. Sei como ela converte um único caractere em inteiro, mas com uma string como um CPF, que contém "." e "-", não consegui implementar. Eu teria que passar os números do cpf pra um vetor de inteiros, certo?