Ir ao conteúdo
  • Cadastre-se

Validação de cpf


Jordaniel Alves

Posts recomendados

Estou precisando de ajuda na montagem de um algoritmo que faça validação de CPF. Faço curso de lógica de programação e tenho um trabalho para ser entregue amanhã (15/10/2003). Estou utilizando o programa Projeto Ambap, mas acho que ele não usa vetores, então vou ter que fazer manuscrito.

Alguém me ajuda?  :help:

Link para o comentário
Compartilhar em outros sites

Não estou certo se é isso que você quer, mas eu tenho esse código em Python que você pode portar para a linguagem que quiser. Acredito que não terá problemas em entendê-lo. Ele gera o próximo número da sequência de CPF, então para validar um número XXX.XXX.XXX-YY, você passa XXX.XXX.XXX para a função e ela deve retornar o primeiro dígito Y, em seguida você repete com XXX.XXX.XXX-Y e ela deve retornar o último dígito.


def _gen(cpf):
   res = []
   for i in range(len(cpf)):
       a = cpf[i]
       b = (len(cpf) + 1 - i)
       res.append(b * a)
       
   res = reduce(int., res)
   res = res % 11
               
   if res > 1:
       return (11 - res)
   else:
       return 0

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por SpawnlinuX@14 Out. 2003,11:01

Estou precisando de ajuda na montagem de um algoritmo que faça validação de CPF. Faço curso de lógica de programação e tenho um trabalho para ser entregue amanhã (15/10/2003). Estou utilizando o programa Projeto Ambap, mas acho que ele não usa vetores, então vou ter que fazer manuscrito.

Alguém me ajuda?  :help:

O ambap dispõe de variaveis compostas.

a sintaxe é:

matriz numerico <expr1>[<expr2>,<expr3>] ,

matriz caracter <expr1>[<expr2>,<expr3>] ou

matriz logico <expr1>[<expr2>,<expr3>]

Ex:

Vetor de 10 posições

Variaveis

    matriz numerico v[10]

Matriz 2x2

Variaveis

    matriz numerico m[2,2]

Link para o comentário
Compartilhar em outros sites

Galera, valeu d++++!! consgui montar o algoritmo para validação de CPF e ordenação de vetores!! Confiram:

Ordenação de Vetores:

//algoritmo feito em ila, sem utilizar procedimentos para ordenação de

vetores.

variaveis

numerico a,b,c,m,aux,menor

matriz numerico num[100]

inicio

//nesta linha deverão ser digitados os números que serão ordenados.

escrever "digite a quantidade de numeros que serão ordenados: "

ler a

para b de 1 ate a

 escrever "digite o ",b,"º numero:"

 ler num

 próximo

//este laço é executado até que (B) seja igual ao índice do penúltimo

elemento do vetor.

 para b de 1 ate a-1

//na linha abaixo (menor) recebe o valor de (B)

   menor:=b

//no laço abaixo © recebe o valor de (a) e será executado até que © seja

igual a (b+1), trazendo o menor elemento para //as posições inicias

sucessivamente voltando ao para da linha acima até que todos os valores do

vetor tenha sido movidos //para as posições de ordem correta.

   para c de a ate b+1 passo -1

//a linha abaixo testa o menor valor.

     se num[c]<num[menor] então

//se a expressão for verdadeira (menor) recebe o valor de © senão volta ao

para e executa até fechar o laço e encontra o //menor numero.

         menor:=c

     fim_se

   proximo

//nas linhas abaixo o menor valor é trazido para a primeira posição,

voltando ao primeiro para do laço, passando pelo //segundo para testando o

segundo o segundo menor numero, retornando as linhas abaixo para mover o

segundo menor //numero para a segunda posição assim sucessivamente.

   aux:=num

   num:=num[menor]

   num[menor]:=aux

   proximo

       para b de 1 ate a

         escrever num

       proximo

fim

Validação de CPF:

//Algoritmo para validação de cpf.

variaveis

numerico dv,dv1,soma,soma1,divi,divi1,multi,mult1,rest,

matriz numerico cpf[11]

inicio

escrever "digite o CPF, após cada numero tecle enter: "

ler cpf[1]

ler cpf[2]

ler cpf[3]

ler cpf[4]

ler cpf[5]

ler cpf[6]

ler cpf[7]

ler cpf[8]

ler cpf[9]

ler cpf[10]

ler cpf[11]

soma:=(cpf[1]*10)+(cpf[2]*9)+(cpf[3]*8)+(cpf[4]*7)+(cpf[5]*6)+(cpf[6]*5)+(cpf[7]*4)+(cpf[8]*3)+(

cpf[9]*2)

rest:=resto(soma,11)

 se (rest=0) ou (rest=1) então

    dv:=0

    senao

    dv:=(11-rest)

 fim_se

soma:=(cpf[1]*11)+(cpf[2]*10)+(cpf[3]*9)+(cpf[4]*8)+(cpf[5]*7)+(cpf[6]*6)+(cpf[7]*5)+(cpf[8]*4)+

(cpf[9]*3)+(dv*2)

rest:=resto(soma,11)

 se (rest=0) ou (rest=1) então

    dv1:=0

    senao

     dv1:=(11-rest)

  fim_se

 se (dv=cpf[10]) e (dv1=cpf[11]) então

    escrever "CPF ok!"

    senao

    escrever "CPF invalido!"

 fim_se

fim

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...