32 lines
563 B
Go
32 lines
563 B
Go
package algoritmo
|
|
|
|
import "strconv"
|
|
|
|
// Calcula el dígito verificador usando Módulo 11
|
|
func calcularModulo11(cadena string) string {
|
|
suma := 0
|
|
multiplicador := 2
|
|
limMult := 9
|
|
|
|
for i := len(cadena) - 1; i >= 0; i-- {
|
|
digito := int(cadena[i] - '0')
|
|
suma += digito * multiplicador
|
|
multiplicador++
|
|
if multiplicador > limMult {
|
|
multiplicador = 2
|
|
}
|
|
}
|
|
|
|
residuo := suma % 11
|
|
var verificador string
|
|
switch residuo {
|
|
case 10:
|
|
verificador = "1"
|
|
case 11:
|
|
verificador = "0"
|
|
default:
|
|
verificador = strconv.Itoa(residuo)
|
|
}
|
|
return verificador
|
|
}
|