67477093 Digito Verificador
del rut
NATURAL, EN PALABRAS:
ALGORITMO 1
1. Multiplicar cada dígito del RUT se por 2, 3, ..., 7, 2, 3, ... de atrás hacia adelante.
2. Sumar las multiplicaciones parciales.
3. Calcular el resto de la división por 11
4. El Dígito Verificador es 11 menos el resultado anterior. Si es 10, se cambiapor 'k'.
EJEMPLO. RUT: 11.222.333
1. 1 1 2 2 2 3 3 3 <-- RUT
* 3 2 7 6 5 4 3 2 <-- 2, 3, 4, 5, 6, 7, 2, 3, ...
-------------------------------------3 2 14 12 10 12 9 6
2. SUMA: 3 + 2 + 14 + 12 + 10 + 12 + 9 + 6 = 68
3. 68 : 11 = 6
- 66
---2 <-- RESTO
4. 11 - 2 = 9 <-- DÍGITO VERIFICADOR
______________________________________________________
ALGORITMO 2, versión alternativa
1. Multiplicar cadadígito del RUT se por 9, 8, ..., 4, 9, 8, ... de atrás hacia adelante.
2. Sumar las multiplicaciones parciales.
3. Calcular el resto de la división por 11
4. El Dígito Verificador es el resultado anterior. Si es 10, se cambia por 'k'.
EJEMPLO. RUT: 11.222.333
1. 1 1 2 2 2 3 3 3 <-- RUT
* 8 9 4 5 6 7 8 9 <-- 9, 8, 7, 6, 5, 4, 9, 8, ...
-------------------------------------8 9 8 10 12 21 24 272. SUMA: 8 + 9 + 8 + 10 + 12 + 21 + 24 + 27 = 119
3. 119 : 11 = 10
- 110
----9 <-- RESTO
4. 9 <-- DÍGITO VERIFICADOR
______________________________________________________
ALGORITMO 3, propiedades de la división por 11
1. Multiplicar cada dígito del RUT se por 9, 8, ..., 4, 9, 8, ... de atrás hacia adelante.
2. Sumar las multiplicaciones parciales.
3. Suma alternada de la lista reversa de losdígitos del resultado anterior.
4. El Dígito Verificador es el resultado anterior. Si es 10, se cambia por 'k'.
EJEMPLO. RUT: 11.222.333
1. 1 1 2 2 2 3 3 3 <-- RUT
* 8 9 4 5 6 7 8 9 <-- 9, 8, 7, 6, 5, 4, 9, 8, ...
-------------------------------------8 9 8 10 12 21 24 27
2. SUMA: 8 + 9 + 8 + 10 + 12 + 21 + 24 + 27 = 119
3. SUMA ALTERNADA: 119 -> 9 - 1 + 1 = 9
4. 9 <-- DÍGITO VERIFICADORActionScript
Nota del Autor:
El código devuelve un true o false solamente, el que la persona que diseñe tiene que asignar la
función que quiera. Usa dos campos de textos de input; uno de la pate numerica con la variable
"xRut" y otro con el campo del dígito verificador "Dv". Este código va directamente en el boton de
"aceptar" en el formulario en cuestión:
// Autor: Cristobal Brenner
on (release){// Definicion de Variables Utilizadas
var Suma = 0;
var rut = xRut;
var NumMag = 2;
var Resto = 0;
// Defino el arreglo con los posibles digitos verificadores
var DigVer = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "K", "0");
var ParteNumerica = new Array();
// Valida que el rut no este vacio
if (rut.length == 0) { return false; }
// Copio solo la parte numerica, sin espacios nipuntos
// en otra variable para calcular el digito verificador
for (j=0, i=0; j
if (rut.charAt(j) != ' ' && rut.charAt(j) != '.' && rut.charAt(j) != '-')
{
ParteNumerica[i] = rut.charAt(j);
++i;
}
}
// Se calcula el digito verificador del rut
for (i=ParteNumerica.length-1; i>=0; i--, NumMag++)
{
Suma += ParteNumerica[i]*NumMag;
trace(Suma +' '+ ParteNumerica[i] +' '+NumMag);
if (NumMag>6) { NumMag = 1; }
}
Resto = 11-(Suma%11);
if (DigVer[Resto] != Dv.toUpperCase())
{
trace("Rut válido");
}
else
{
trace("Rut no válido");
}
}
ASP
' Autor: Rodolfo Barriga
Function codigo_veri(rut)
tur=strreverse(rut)
mult = 2
for i = 1 to len(tur)
if mult > 7 then mult = 2 end if
suma = mult * mid(tur,i,1) + suma
mult = mult +1
next
valor = 11 - (suma mod 11)
if valor = 11 thencodigo_veri = "0"
elseif valor = 10 then
codigo_veri = "k"
else
codigo_veri = valor
end if
end function
AWK
# Autor: Hernan Aburto
BEGIN{
T=ARGV[1];
v=1;
for(i=2;i<=9;i++)
{
if (i==8) v=2;
else v++;
S = S + v * (T%10);
T = int(T/10);
}
S = 11 - S%11;
if (S==10) {print "k";}
else if (S==11) print 0;
else print S;
}
Ejemplo de uso:
$ awk -f rut.awk 11111111
1
C
// Autor: ??
main(){int...
Regístrate para leer el documento completo.