VERIFICADOR DE CPF EM NCURSES
Publicado por Thiago 07/03/2006
[ Hits: 7.619 ]
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;
}
Escolha o algoritmo de ordenação
Parte 1 - Sessão de estudo sobre MATRIZES
Simulador de Cronômetro com 2 digitos
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Preciso recuperar videos *.mp4 corrompidos (0)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (3)
Programa fora de escala na tela do pc (38)









