Verificação de RG

C / C++
Enviado por thotypous em Ter, 03/01/2006 - 07:50.C / C++
Está cheio de exemplos por aí de como verificar se o dígito de um CPF é válido, mas é mais raro achar algum exemplo de implementação de um algoritmo para verificar a validade do dígito do RG. Aqui vamos explicar esse simples algoritmo e implementá-lo em C, podendo ser facilmente convertido para qualquer linguagem.
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. int rg_valido(char *rg)
  6. {
  7.   char r[9];
  8.   int i=0,j=0;
  9.   /* O RG tem 9 números, e o que fazemos na primeira etapa é pegar só os
  10.      números (caso o cara tenha digitado os pontos e os traços do RG, eles
  11.      são ignorados). Ao mesmo tempo em que pegamos os números, convertemos
  12.      os valores de texto para valores numéricos, que são guardados no
  13.      vetor r. */
  14.   for(;i<strlen(rg)&&j<9;i++)
  15.     if(isdigit(rg[i]))
  16.       r[j++] = rg[i] - '0';
  17.   /* Agora fazemos a checagem. Multiplicamos o primeiro número do RG por 2,
  18.      o segundo por 3, e assim por diante, e vamos somando os resultados.
  19.      O dígito (último número) é multiplicado por 100 e também é somado.
  20.      Depois verificamos se a soma é divisível por 11. Se for, o RG é
  21.      válido. */
  22.   return (r[0]*2 + r[1]*3 + r[2]*4 + r[3]*5 +
  23.           r[4]*6 + r[5]*7 + r[6]*8 + r[7]*9 +
  24.           r[8]*100) % 11 == 0;
  25. }
  26.  
  27. int main(int argc, char **argv)
  28. {
  29.   printf("RG %s\n", rg_valido(argv[1])?"válido":"inválido");
  30.   return 0;
  31. }


Enviado por Será? (não verificado(a)) em Sáb, 01/04/2006 - 15:46.

O meu RG tem 8 números, e ai, como eh que eu faço?

Enviado por daiane (não verificado(a)) em Seg, 31/07/2006 - 14:44.

rg: 3.548.275
quero saber se é mesmo de um cara chamado:
Eduardo J.Da Silva

Enviado por guest (não verificado(a)) em Ter, 01/08/2006 - 07:15.

vai na polícia, sua burra imbecil!

Enviado por alvinho (não verificado(a)) em Ter, 01/08/2006 - 17:42.

Vai pilotar fogão sua burra do caralho!

Enviado por guest (não verificado(a)) em Seg, 29/03/2010 - 21:39.

porra! Vai trabalhar ou usar a bunda pq a cabeça vc nao usa idiota burra estupida!

Enviado por leo (não verificado(a)) em Ter, 01/08/2006 - 18:17.

bom, nao necessariomente o RG tem 9 numeros
hehe
o do meu pai por exemplo tem 15
sao poucos que saiu assim, mas tem hehe

Enviado por professor (não verificado(a)) em Sáb, 04/07/2009 - 15:49.

kkkkkkkkkkkkkkkkkk se encherga ... o certo e necessariamente

Enviado por Francisco (não verificado(a)) em Seg, 09/03/2009 - 12:49.

O meu RG realmente possui 9 dígitos e foi expedido pelo IFP(Instituto Félix Pacheco), hoje quem responde por este processo de emissão de RG, é o DETRAN.
Piração! Mas o RG da minha esposa que também tem 9 dígitos, é expedido pelo IMG (Instituto de Minas Gerais), possui Letras com M entre os números, como calcular isso?
Ou seja, Apesar de ser louvável a sua iniciativa de contribuir com uma solução para o problema do RG, vemos que ela talvez só se aplique para IFP.
Antigamente, cada estado possuia seu sistema de identificação, hoje tentam reunir isso através do detran, mas isso só nas próximas gerações.
Na realidade de hoje, não dá pra aproveitar seu código, porque cada caso é um caso. A não ser que você investigue todos os sistemas empregados em todos os estados brasileiros.
Atualmente seu código não é aplicável, é inútil, se existe identificadores com 9 digitos, 8 dígitos, 15 dígitos, digitos com caracteres alfanuméricos, não por sua culpa, mas pelo próprio sistema de identificação em sí. Mas valeu pela iniciativa.

Enviado por Paulo (não verificado(a)) em Ter, 22/09/2009 - 13:58.

O número do registro geral é sequencial. O RG do meu avô tinha 6 dígitos, o do meu pai e o meu tem 7 dígitos e dos meus filhos, 8 dígitos. Desta feita, o do meu avô estava na casa dos 300 mil, na década de 40, o do meu pai, na década de 50, estava em torno de 1 milhão, o meu 7 milhoes em 1972 e dos meus filhos, 44 milhões no século XXI. Todos SSP/SP.

O dígito verificador é inovação. Só existe depois da década de 80;

Os cadastros criminais, expedem RGs com 9 dígitos.

Sendo assim, o melhor é pesquisar todas as possibilidades para v. sa. implementar um algorítimo que responda todas as variantes possíveis.

Essas informações dizem respeito somente aos RGs expedidos pelo I.I.R.G.D./SP.

Enviado por Daniel S. (não verificado(a)) em Sex, 06/11/2009 - 19:22.

O rg no RS é emitido com 10 digitos faz dezenas de anos. Eu trabalho no Departamento de Identificação do RS e o que posso afirmar é que não há um padrão nacional até que seja introduzido o novo sistema de RG's, que na verdade nem esse nome terá. Até lá, existirão RG's com 8, 9, 10, 15 digitos.. RG's com letras, etc. E o RG não é necessariamente sequencial, até porque hoje cabe aos estados o controle sobre isso, aqui mesmo, como ja disse, essa história de sequencial não vale de regra, todas as gerações da minha família usam 10 dígitos, sem qualquer pontuação.

Enviado por wm (não verificado(a)) em Qui, 29/07/2010 - 21:26.

Essa regra vale apenas para o estado mais rico e avançado, seu estado vive na idade da pedra por isso essas regras não tem valor. Então de graças a deus que cada estado seja independente entre si mesmo sendo vetado a dissolução dos estados, porque se fosse o contrário e vcs tivessem que receber essas regras seria um caos a administração do RS e dos demais.

Por isso que o Brasil não vai para frente, tem que carregar muitos pesos, muita gente mesquinha e imbecil, com a cabeçorra que apesar de grande só tem merda.

Enviado por Daniel S. (não verificado(a)) em Sex, 06/11/2009 - 19:25.

PS. Os cadastros criminais variam, os estaduais de acordo com o RG local (RS = 10 dígitos) por exemplo.