Desafio 3 em C

1. Desafio 3 em C

Leandro Mansor
lenux

(usa Fedora)

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 ...



  


2. Solução

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

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

Marcelo C
mcelll

(usa Kurumin)

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

não funciona com o turbo C++ 4.5






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts