Pular para o conteúdo

VERIFICADOR DE CPF EM NCURSES

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.
Thiago thiagoamm
Hits: 7.776 Categoria: C/C++ Subcategoria: Introdução
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

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.
Download verificacpf.c Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

/*
 * 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;
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

my_strlen

Processo em background

Tabuada no terminal

Exemplo Básico de Ponteiros em C

Controle de maior / menor de idade (por ano)

#1 Comentário enviado por humbhenri em 07/03/2006 - 19:58h
Não entendi como ele calcula a validez do cpf, que eu saiba tem algo a ver com os dígitos verificadores. Entrei com meu cpf tanto com eles como sem eles e deu cpf inválido
#2 Comentário enviado por thiagoamm em 07/03/2006 - 20:10h
********************** AVISO ******************************
Galera esse programa utiliza a biblioteca ncurses.h e só funciona no linux (desde que este possua a ncurses em sua coleção de bibliotecas), caso não tenha procure no google, baixe o pacote e instale.
O PROGRAMA NÃO ACEITA CPF COM CARACTERES ESPECIAIS (OS PONTOS E O TRAÇO). Ex: Ao invés de informar um cpf xxx.xxx.xxx-xx, informe xxxxxxxxxxx
#3 Comentário enviado por thiagoamm em 15/11/2007 - 00:22h
Este programa tá bugado.
Vou corrigí-lo.
Me desculpem.

Contribuir com comentário

Entre na sua conta para comentar.