VERIFICADOR DE CPF EM NCURSES
Publicado por Thiago 07/03/2006
[ Hits: 7.533 ]
Leiam a observação na parte comentada do algoritmo.
Sugestões são bem aceitas.
Caso encontrem erros me informem e demonstrem soluções.
Ficarei satisfeito em aprender mais com vcs.
Abraço a todos.
/* * Programa: verificacpf.c * Autor: thiagoamm * Data: 06/03/06 * OBS: Esse programa e essecialmente baseado em algoritmo testado no laboratorio * da Universidade. * Atraves dele estuda-se o conceito de modularizacao. * Estao sendo usadas variaveis globais propositalmente para nocao do conceito * de escopo e consequentemente deixando um guancho para o topico (parametros). * * */ #include <ncurses.h> #include <string.h> /* Cabecalho de funcoes e subrotinas */ void calcdig(void); /* Variaveis globais */ int aux,dc; /* Modulo principal */ int main(void) { long int cpf; int d1,d2,n9; char sair; char titulo[] = {"._.**.._.*%%*., VERIFICADOR DE CPF ,.*%%*._..**._."}; WINDOW *wstd, *j1, *jmsg, *jsair; /* Iniciando modo ncurses */ initscr(); j1 = newwin(3,60,7,20); wstd = newwin(15,60,10,20); jmsg = newwin(5,20,15,40); jsair = newwin(3,40,1,30); start_color(); init_pair(1,COLOR_GREEN,COLOR_BLACK); init_pair(2,COLOR_YELLOW,COLOR_BLUE); init_pair(3,COLOR_RED,COLOR_BLACK); init_pair(4,COLOR_BLUE,COLOR_BLACK); wbkgd(j1,COLOR_PAIR(2) | A_BOLD); wbkgd(wstd,COLOR_PAIR(1) | A_BOLD); box(j1,0,0); box(wstd,0,0); sair = 'n'; // Flag. do { mvwprintw(j1,1,5,"%s",titulo); wrefresh(j1); mvwprintw(wstd,2,2,"Informe seu CPF: "); mvwscanw(wstd,2,19,"%ld",&cpf); d2 = cpf % 10; d1 = (cpf / 10) % 10; n9 = (cpf / 10) / 10; aux = n9; calcdig(); // Chamando a subrotina. if (dc == d1) { aux = n9 * 10 + dc; calcdig(); if (dc == d2) { wbkgd(jmsg,COLOR_PAIR(4) | A_BOLD); box(jmsg,0,0); mvwprintw(jmsg,2,2," CPF VALIDO"); wrefresh(jmsg); } else { wbkgd(jmsg,COLOR_PAIR(3) | A_BOLD); box(jmsg,0,0); mvwprintw(jmsg,2,2," CPF INVALIDO!"); wrefresh(jmsg); } } else { wbkgd(jmsg,COLOR_PAIR(3) | A_BOLD); box(jmsg,0,0); mvwprintw(jmsg,2,2," CPF INVALIDO!"); wrefresh(jmsg); } wbkgd(jsair,COLOR_PAIR(1)); box(jsair,0,0); mvwprintw(jsair,1,2,"Deseja sair ? (s / n): "); mvwscanw(jsair,1,24,"%c",&sair); wclear(jsair); wrefresh(jsair); mvwprintw(wstd,2,19," "); wclear(jmsg); wrefresh(jmsg); } while (sair != 's'); /* Finalizando modo ncurses */ endwin(); return(0); } /* Implementando a subrotina */ void calcdig(void) { int cont = 2, s = 0, n; while (aux != 0) { n = aux % 10; // resto de divisao inteira. s = s + n * cont; cont++; aux = aux / 10; // quociente de divisao inteira. } s = s * 10; dc = s % 11; if (dc == 10) dc = 0; }
Número par ou ímpar (com operado bit a bit)
Utilizando arrays, funções e arquivos de texto
Customizar a Instalação do Linux Debian com Preseed
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Sem espaço na partição home (4)
Aprendendo mais sobre Linux com livro (6)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (6)