VERIFICADOR DE CPF EM NCURSES
Publicado por Thiago 07/03/2006
[ Hits: 7.690 ]
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;
}
Agenda Telefônica Simples em C
vetor01.c (programa que envolve vetor, simples)
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Problema com som no laptop (5)
Quando vocês pararam de testar distros? (11)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (2)









