Cooler_

cpf validator tabajareitor

Apr 26th, 2012
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.05 KB | None | 0 0
  1. /*
  2. validador de CPF by Cooler_
  3. c00f3r[at]gmail[dot]com
  4.  
  5. prazer em escrever código xD
  6.  gcc -O3 -o code code.c; ./code
  7.  
  8.  O3 == para otimizar o código  :-)
  9. */
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13.  
  14. int
  15. main()
  16. {
  17.  char *cpf=(char *)malloc(sizeof(char)*14);
  18.  int *carry=(int *)malloc(sizeof(int)*14);
  19.  register int x=0,input=0,beta=0,gamma=0,lambda=0,num=0,add=0;
  20.  
  21.  puts("Qual cpf zeh maneh? ");
  22.  scanf(" %12s",cpf);
  23.  
  24. // char 2 int :-) fica masi rapido lol
  25.  do
  26.  {
  27.   *(carry+x)=*(cpf+x)-48;
  28.   x++;
  29.  }while(x<11);
  30.  
  31.  x=0;
  32.  
  33. //primeiro num
  34.  do
  35.  {
  36.   add+=*(carry+x) *(10-x);
  37.   x++;
  38.  }while(x<9);
  39.  
  40.  beta=add%11;
  41.  
  42.  input=( (!beta) || (!(beta^1)) )?0:11-beta;
  43.  
  44.  add=0;
  45.  
  46.  x=0;
  47. // segundo num
  48.  do{
  49.   add+=*(carry+x)*(11-x);
  50.   x++;
  51.  }while(x<10);
  52.  
  53.  num=(add/11)*11;
  54.  gamma=add-num;
  55.  
  56.  lambda=( (!gamma) || (!(gamma^1)) )?0:11-gamma;
  57.  
  58.  printf("\nCPF %s\n",(input== (*(carry+9)) ) && (lambda== (*(carry+10)) )?"OK":"FAIL");
  59.  
  60.  free(carry);
  61.  free(cpf);
  62. // sleep(10);  para dar uma pausa caso esteja no rwindows ;-)
  63.  return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment