VERIFICADOR DE CPF EM NCURSES
Publicado por Thiago 07/03/2006
[ Hits: 7.432 ]
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; }
Algoritmo de ordenação: Inserction Sort
decodificador e codificador de arquivos
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)