Ir ao conteúdo
  • Cadastre-se

Dígito Verificador


Posts recomendados

:muro: Seria a seguinte regra...

Primeiro calculamos a soma da multiplicação dos 4 primeiros dígitos por 5,4,3 e 2, respectivamente. Ou seja

Soma = (2*5)+(5*4)+(3*3)+(1*2)

Em seguida, dividimos e multiplicarmos por 11. (nota: Ao multiplicarmos utilizamos o valor inteiro de divisão).

Valor = (Soma/11)*11

Por fim, subtraímos valor de soma.

Resultado = soma - valor

Note que acabamos de realizar o módulo de soma e 11. As duas operações anteriores podem ser substituídas por resultado = Soma módulo 11.

Agora analisamos resultado:

Se resultado for igual à 1 ou 0, então o 1.º dígito verificador é 0;

Caso contrário, o 1.º dígito verificador é o resultado da subtração de resultado de 11.

Obs.: Tomaremos com exemplo o número 2531-3

Link para o comentário
Compartilhar em outros sites

Em VB eu Consegui com o seguinte código.. se precisar implementar em outra linguagem só pidir, ou se tiver alguma duvida quando a logica também :-BEER

Dim Renavam As String
Dim Numeros(5) As String
Dim I, J As Integer
Dim Soma, Valor As Single
Dim Digito As Integer
J = 0
Renavam = txt_renavam.Text
Renavam = Replace(Renavam, "-", "")
For I = 1 To 5
Numeros(I - 1) = Mid(Renavam, I, 1)
Next
For I = 5 To 2 Step -1
Soma = Soma + (Numeros(J) * I)
J = J + 1
Next
Valor = Soma Mod 11
If ((Valor = 1) Or (Valor = 0) Or (Valor >= 10)) Then
Digito = 0
Else
Digito = Valor
End If
Label2.Caption = Digito & " " & Numeros(4) & " " & Soma & " " & Digito
If (Digito = Numeros(4)) Then
MsgBox ("Renavam nº " & Renavam & " Valido!")
Else
MsgBox ("Renavam nº " & Renavam & " Invalido!")
End If

 

Link para o comentário
Compartilhar em outros sites

taí

Var renavam : string;
    soma, digito : integer;
    valor, verificador : integer;
    i, j : integer;
begin
  j := 1;
  soma := 0;

  renavam := edt_renavam.Text;

  For i := 5 downto 2 do
  begin
    soma := soma + (StrToInt(renavam[j]) * i);
    j := j + 1;
  end;

  valor := soma mod 11;
  digito:= StrToInt(renavam[6]);

  if((valor <= 1) or (valor >= 10)) then
    verificador := 0
  else
    verificador := valor;

  If (digito = verificador) then
    showmessage ('Renavam nº '+ renavam+ ' Valido!!!')
  else
    showmessage ('Renavam nº '+ renavam+ ' invalido!!!');

Link para o comentário
Compartilhar em outros sites

  • 10 anos depois...
procedure TfrmTestes.btn8Click(Sender: TObject);
var
   Verificador: Integer;
   Valor: integer;
   Num: string;
begin
  Num := edtRenavam.Text;
  Verificador := StrToInt(num[11]);
  Valor := ((StrToIntDef(num[1],0)  * 3 +
          StrToIntDef(num[2],0)  * 2 +
          StrToIntDef(num[3],0)  * 9 +
          StrToIntDef(num[4],0)  * 8 +
          StrToIntDef(num[5],0)  * 7 +
          StrToIntDef(num[6],0)  * 6 +
          StrToIntDef(num[7],0)  * 5 +
          StrToIntDef(num[8],0)  * 4 +
          StrToIntDef(num[9],0)  * 3 +
          StrToIntDef(num[10],0) * 2)
          * 10)
          mod 11;
  if Valor = 10 then
    Valor := 0;
  if Valor = Verificador then
    showmessage ('Renavam nº '+ edtRenavam.Text + ' Valido!!!')
  else
    showmessage ('Renavam nº '+ edtRenavam.Text + ' invalido!!!');
end;

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...