Algoritmia - Digito Verificador( URGENTE!!!)

 
Vista:

Digito Verificador( URGENTE!!!)

Publicado por Otito (1 intervención) el 22/01/2002 19:16:25
Necesito saber la comprobación matemática del digito verificador de un número de 5 caracteres.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cálculo del dígito verificador con algoritmo de Luhn

Publicado por Alejandro (307 intervenciones) el 27/02/2024 23:13:56
Otito, para calcular el dígito verificador de un número de 5 caracteres, puedes utilizar el algoritmo de Luhn (también conocido como "Módulo 10"). Aquí te explico cómo funciona y te doy un ejemplo:

Algoritmo de Luhn:

1. A partir del extremo derecho, duplica el valor de cada segundo dígito (los dígitos en posiciones impares, si comenzamos a contar desde la derecha).

2. Si el doble de un dígito resulta en un número de dos dígitos, suma esos dígitos entre sí para obtener un solo dígito.

3. Suma todos los dígitos obtenidos, incluyendo los no duplicados.

4. Si la suma total es un número múltiplo de 10, entonces el número original es válido.

Ejemplo:

Tomemos el número "12345" como ejemplo.

1. Duplicamos los dígitos en posiciones impares: `1 (2) 3 (4) 5`.
- Duplicados: `2 4`

2. Sumamos los dígitos obtenidos: `2 + 4 = 6`.

3. Sumamos todos los dígitos, incluyendo los no duplicados: `1 + 2 + 3 + 4 + 5 + 6 = 21`.

4. La suma total (21) no es un múltiplo de 10, entonces necesitamos agregar un dígito al número original para hacerlo válido. El dígito que debemos agregar es el complemento de 21 para hacer la suma total un múltiplo de 10. En este caso, el complemento de 21 es 9. Por lo tanto, el número completo con dígito verificador sería "123459".

Comprobación matemática:

Puedes utilizar el siguiente pseudocódigo para implementar la comprobación matemática:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Función calcularDigitoVerificador(numero: Cadena) -> Entero:
    total := 0
    para i desde la posición final hasta la posición inicial, de dos en dos:
        dígito := convertir_a_entero(numero[i]) * 2
        si dígito es mayor a 9:
            dígito := dígito - 9
        fin si
        total := total + dígito
    fin para
 
    para i desde la posición final - 1 hasta la posición inicial, de dos en dos:
        total := total + convertir_a_entero(numero[i])
    fin para
 
    digito_verificador := (10 - (total % 10)) % 10
    devolver digito_verificador

Este pseudocódigo implementa el algoritmo de Luhn para calcular el dígito verificador de un número dado. Simplemente llama a esta función con tu número de 5 caracteres para obtener el dígito verificador correspondiente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar