Código de Clipper/FiveWin - Digito verificador RUT

Digito verificador RUTgráfica de visualizaciones


Clipper/FiveWin

estrellaestrellaestrellaestrellaestrella(4)
Publicado el 27 de Junio del 2002 por Charchito Rastor
18.838 visualizaciones desde el 27 de Junio del 2002. Una media de 28 por semana
Digito verificador, Cedula Nacional de Identidad Chilena.

Versión 1
estrellaestrellaestrellaestrellaestrella(4)

Publicado el 27 de Junio del 2002gráfica de visualizaciones de la versión: Versión 1
18.839 visualizaciones desde el 27 de Junio del 2002. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/****************************************************************************
           Digito verificador, Cedula Nacional de Identidad Chilena.
         =============================================================

   Debes ingresar el Rut, sin el digito verificador obviamente, en una
   variable de tipo numerica, maximo ocho caracteres.

   Eso lo guardas en la variable XX, despues llamas a la funcion:
   - Valida_Rut(XX)

   Esto te devolvera otra variable: "Digito", la cual contiene nuestro
   Digito Verificador.
*****************************************************************************/
 
/* :**********************: */
Function Valida_Rut(Numero)
/* :**********************: */
Largo := Len(Str(Numero))
Digito := Suma := Contenedor := Divi := 0
Multi := 2
For i = Largo to 1 Step -1
    Contenedor = Val(SubStr(Str(Numero), i , 1)) * Multi
    Suma = Suma + Contenedor
    Multi = Multi + 1
    If Multi = 8
       Multi = 2
    EndIf
Next i
Divi = Mod(Suma, 11)
Digito = Divi - 11
If Digito < 0
   Digito = Digito * -1
EndIf
If Digito = 11
   Digito := "0"
ElseIf Digito = 10
   Digito := "K"
Else
   Digito := Alltrim(Str(Digito))
EndIf
 
Return Digito



Comentarios sobre la versión: Versión 1 (4)

gabriel
19 de Julio del 2003
estrellaestrellaestrellaestrellaestrella
simple y util
Responder
galansinchance
02 de Diciembre del 2004
estrellaestrellaestrellaestrellaestrella
ete ,mejol:

#include<stdio.h>
#include<conio.h>

long int saca_dig(long int);

void main()
{long int run,dvv;

clrscr();
printf("ingresa tu rut:\n");
scanf("%li", & run);

dvv=saca_dig(run);

if ((dvv%11)==0)
printf("el d¡gito verificador es 0");

if (((dvv%11)==1)
printf("el d¡gito verificador es k");

if (((dvv%11)>1)
{
printf("el d¡gito verificador es %i", 11-(dvv%11));
}
//ahora funciona bien
getch();
}

long int saca_dig(long int x)
{long int aux=0,cont=2;

while(x!=0)
{
aux+=((x%10)*cont);
cont++;
if (cont>7) cont=2;
x/=10;
}
return(aux);
}
Responder
Ricardo Huincahue.
23 de Marzo del 2007
estrellaestrellaestrellaestrellaestrella
Aqui otra version mas pequeña y optimizada.
*------------------------------------------------------------------------------
* Funcion para validar el R.U.T., segun el digito verificador.
* Retorna .T. o .F., segun la validacion del rut.
*------------------------------------------------------------------------------
* Autor : Ricardo Alfredo Huincahue Henriquez.
*------------------------------------------------------------------------------
Function valida_rut
parameter pr_rut
Private d1,d2,d3,d4,d5,d6,d7,d8
If empty(pr_rut)
Return .f.
endif
pr_rut = padl(alltrim(pr_rut), 9)
d1 = val(substr(pr_rut, 1, 1))
d2 = val(substr(pr_rut, 2, 1))
d3 = val(substr(pr_rut, 3, 1))
d4 = val(substr(pr_rut, 4, 1))
d5 = val(substr(pr_rut, 5, 1))
d6 = val(substr(pr_rut, 6, 1))
d7 = val(substr(pr_rut, 7, 1))
d8 = val(substr(pr_rut, 8, 1))
Return substr('0K987654321',mod(d1*3+d2*2+d3*7+d4*6+d5*5+d6*4+d7*3+d8*2,11)+1,1)==right(pr_rut,1)
Responder
Ricardo
14 de Junio del 2007
estrellaestrellaestrellaestrellaestrella
esta bueno y tambien serviria para rut de mas de 8 digitos porque al llegar al digito 7 de atras para adelante el multiplicador volveria a ser 2 con lo que vuelve a empezar
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s241