#include < stdio.h >
#include < string.h >
#include < stdlib.h >
//programa para gerar valores de CPF
//será informado os 9 numeros do CPF e será gerado o digito verificador desse cpf
//Números do CPF 2 2 2 3 3 3 6 6 6
//valores definidos para calculo 10 9 8 7 6 5 4 3 2
//multiplica os numeros das colunas
// 20 18 16 21 18 15 24 18 12
//em seguida somatorio (162) resultado % 11
//em seguida 11 - resto da divisao
//se o resto for menor q 2 o digito é ZERO
int main(int argc, char *argv[]){
char *cpf = NULL;
char aux1;
char aux2[2];
char cpf_int[11];
int somador = 0, i = 0, aux = 0, first = 0;
int valor_definido = 10;
if (argc > 1){
cpf = argv[1];
}else{
printf("./gerar_cpf\n");
return -1;
}
if (strlen(cpf) != 9 ){
printf("Deve ser informado apenas [9] digitos\n");
return -1;
}
for(i=0;i<9;i++){
aux1 = cpf[i];
sprintf(aux2,"%c", aux1);
aux = atoi(aux2);
somador += aux*valor_definido;
printf(" %d +=%d[%d] * %d \n", somador, aux, i, valor_definido);
valor_definido--;
cpf_int[i]=aux;
}
first = somador % 11;
printf("Mod first %d\n",first);
if(first < 2){
cpf_int[9] = 0;
}else{
cpf_int[9] = 11-first;
printf("digito 1: %d\n ",cpf_int[9]);
}
printf("Cpf com o primeiro digito");
for(i=0;i<10;i++){
printf("%d:",cpf_int[i]);
}
printf("\nCalculando o segundo Digito\n");
somador = 0;
valor_definido = 11;
for(i=0;i<10;i++){
aux = cpf_int[i];
somador += aux*valor_definido;
printf(" %d +=%d[%d] * %d \n", somador, aux, i, valor_definido);
valor_definido--;
}
first = somador % 11;
printf("Mod first %d\n",first);
if(first < 2){
cpf_int[10] = 0;
}else{
cpf_int[10] = 11-first;
printf("digito 2: %d\n ",cpf_int[10]);
}
for(i=0;i<11;i++){
printf("%d:",cpf_int[i]);
if(i==2)
printf(".");
if(i==5)
printf(".");
if(i==8)
printf("-");
}
printf("\nSomatório [%d]\n",somador);
printf("ALL rights for Marcos Rosendo Dalte\n");
return 1;
}
quinta-feira, 1 de abril de 2010
Programa que gera um CPF válido de acordo com a entrada informada
Categoria
Programação C
sexta-feira, 12 de fevereiro de 2010
Calculando Idade a partir de uma data de nascimento em C
Quando precisei implementar um programinha pra calcular a idade de um indivíduo a partir da data de nascimento, consegui achar pouca coisa a respeito. Então vai aqui um programinha com essa dica:
#include < unistd.h >
#include < time.h >
#include < string.h >
#include < stdio.h >
#include < stdlib.h >
int main(void){
time_t t_fim;
struct tm *p_fim;
char buffer[20];
char *pAno, *pMes, *pDia;
char str_ano[5], str_mes[3], str_dia[3];
int ano, mes, dia, idade;
int idade_param = 13;
char *idade_min = NULL;
char data_nascimento[] ="26/09/2000";
time( & t_fim );
p_fim = localtime( & t_fim );
printf("%d\n",p_fim);
printf("data nascimento..: %s\n",data_nascimento);
strcpy( buffer, "\0" );
strncpy( buffer, data_nascimento, 10 );
pDia = strtok( buffer, "/" );
pMes = strtok( NULL, "/" );
pAno = strtok( NULL, "/" );
strncpy(str_dia, pDia, sizeof(str_dia));
strncpy(str_mes, pMes, sizeof(str_mes));
strncpy(str_ano, pAno, sizeof(str_ano));
str_dia[2]='\0';
str_mes[2]='\0';
str_ano[4]='\0';
ano = atoi( str_ano );
mes = atoi( str_mes );
dia = atoi( str_dia );
printf("dia..: %d\n",dia);
printf("mes..: %d\n",mes);
printf("ano..: %d\n",ano);
idade = p_fim->tm_year+1900 - ano;
printf("idade..: %d\s", idade);
if( p_fim->tm_mon+1 <>tm_mon+1 == mes ){
if( p_fim->tm_mday < dia ){
idade--;
}
if (idade >= idade_param){
printf("Idade [%d] maior que a idade minima [%d] - nao é necessario responsavel\n\n",idade, idade_param);
return 0;
}
}
os valores de data de nascimento e idade_param podem ser passados como argumentos de entrada do programa.
Categoria
Programação C
domingo, 2 de agosto de 2009
Assinar:
Postagens (Atom)
Postagens populares
-
Parece ser bem fácil, mas visitando alguns fóruns de programação C percebi que várias pessoas tinham essa dúvida, de como retornar mais de u...
-
Quando precisei implementar um programinha pra calcular a idade de um indivíduo a partir da data de nascimento, consegui achar pouca coisa a...
-
Uma das alternativas para se criar gráficos a partir de um arquivo .txt com os dados gerados por um programa C++, pode ser Excel, Matlab ou ...
-
Achei bem interessante e por isso quero compartilhar com vocês, as apostilas são da Oxford University Press e possuem o ensinamento a partir...
-
O semáforo é uma variável que fica associada a um recurso compartilhado, indicando quando este está sendo acessado por um outro processo. El...
-
FTP (File Transfer Protocol) é o protocolo de transferência de arquivos pela internet. A transferência se dá entre um programa cliente...
-
O que é o RPM? O RPM é um sistema de instalação de programas criado pela Red Hat. O que é um pacote RPM? Um pacote RPM nada mais é do qu...
-
Essa função mostra um exemplo de como tratar caracteres em C, uma das aplicações para este tipo de função é realizar a validação de emails, ...
-
Se você esqueceu a sua senha de root, ou comprou um computador e não sabe a atual senha de root, não se preocupe. Há uma solução bem simples...
-
Para concatenar duas strings de diferentes variáveis em apenas uma é bem simples, basta utilizar a função strcat que irá fazer isso facilme...
