Pular para o conteúdo

Desafio 3 em C

Responder tópico
  • Denunciar
  • Indicar

1. Desafio 3 em C

Enviado em 08/06/2006 - 09:47h

E ai galera, blz ??

Bom sou iniciante em c e precisava resolver este seguinte desafio ..... este desafio envolve matriz, e não estou entendendo mto o funcionamento de matrizes ..
Peço, por gentileza que me ajudem, postando possíveis resoluções em meu email: bomfile@gmail.com.

CPF

Os dois dígitos de verificação do CFP (constituído de 9 dígitos) são calculados através do algoritmo descrito a seguir:

Etapa 1: cálculo do DV1
Soma 1: soma dos produtos de cada dígito por um peso de 2 a 10, na ordem inversa (do nono para o primeiro). Multiplique a soma 1 por 10 e calcule o resto da divisão do resultado por 11. Se der 10, DV1 é zero, caso contrário o DV1 é o próprio resto.

Etapa 2: cálculo do DV2
Soma 2: soma dos produtos de cada dígito por um peso de 3 a 11, também na ordem inversa. Adicione a Soma 2 ao dobro do DV1, multiplique por 10 e calcule o resto da divisão do resultado por 11. Se der 10, DV2 é zero, caso contrário o DV2 é o próprio resto.

Etapa 3: Multiplique DV1 por 10, some com DV2 e você tem o número de controle do CPF.

EXEMPLO: Para o CPF 398 136 146, tem-se:
Etapa 1: 2x6 + 3x4 + 4x1 + 5x6 + 6x3 + 7x1 + 8x8 + 9x9 + 10x3 = 258
2580 mod 11 = 6, portanto, DV1 =6
Etapa 2: 3x6 + 4x4 + 5x1 + 6x6 + 7x3 + 8x1 + 9x8 + 10x9 + 11x3 = 299
(299 + (6x2)) x10 mod 11 = 3150 mod 11 = 8, portanto DV2 =8
Etapa 3: DV1 x 10 + DV2 = 6x10 + 8 = 68, que é o número procurado.

Elabore um programa, em Linguagem C, que dado um CPF calcule os dois dígitos de verificação.

Agradeço pela colaboração ...

Responder tópico

2. Solução

Enviado em 08/06/2006 - 10:40h

/*
* Programa: Gerador de CPF
* Arquivo: cpf.c
* Coder: Enzo Ferber
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){
char cpfdigs[9];
int cpf[9];
int i;
int mul=2;
int dv;
int dv1;
int dv2;
int soma1=0;
int soma2=0;
mark:
system("clear");
printf("\nGERADOR DE CPF\n\n");
printf("CPF: ");
scanf("%s", cpfdigs);
for(i=0;i<9;i++) cpf[i] = (int)cpfdigs[i]-48;
for(i=8;i>=0;i--){
soma1 = soma1 + cpf[i] * mul;
mul++;
}
soma1 = soma1 * 10;
if((soma1%11) == 10) dv1 = 0;
else dv1 = soma1%11;
mul=3;
for(i=8;i>=0;i--){
soma2 = soma2 + cpf[i] * mul;
mul++;
}
soma2 = (soma2 + (dv1 * 2))*10;
if((soma2%11) == 10) dv2 = 0;
else dv2 = soma2%11;
dv = (dv1*10)+dv2;
printf("Digito de verificacao: %02d\n", dv);
return 0;
}

Tá aí seu codigo... mas estuda bem... pq se nao estudar num vai aprender....

Té mais,
qualquer duvida, enzo@veloxmail.com.br (MSN)

3. Re: Desafio 3 em C

Enviado em 13/11/2008 - 00:01h

não funciona com o turbo C++ 4.5

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder