
Digito verificador RUT
Clipper/FiveWin
Publicado el 27 de Junio del 2002 por Charchito Rastor
20.917 visualizaciones desde el 27 de Junio del 2002
Digito verificador, Cedula Nacional de Identidad Chilena.
/****************************************************************************
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)
#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);
}
*------------------------------------------------------------------------------
* 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)