public static void Main()
int[] pesos = { 2, 1, 2, 1, 2, 1, 2, 1 };
Program programInstance = new Program();
string codigoModificado = programInstance.RellenarCerosEnLaIzquierda("26999");
int[] resultadoSuma = programInstance.CalcularSumaPonderada(codigoModificado, pesos);
int[] sumaAcumulada = programInstance.CalcularSumaAcumulada(resultadoSuma);
int resultadoFinal = programInstance.CalcularDigitoVerificador(sumaAcumulada);
Console.WriteLine($"El resultado final es: {resultadoFinal}");
public string RellenarCerosEnLaIzquierda(string codigo)
return codigo.PadLeft(codigo.Length + 3, '0');
public int[] CalcularSumaPonderada(string codigo, int[] pesos)
char[] caracteres = codigo.ToCharArray();
int[] resultadoSuma = new int[pesos.Length];
for (int i = 0; i < pesos.Length && i < caracteres.Length; i++)
int valorCaracter = caracteres[i] - '0';
int sumaPonderada = pesos[i] * valorCaracter;
string sumaPonderadaComoString = sumaPonderada.ToString();
char[] caracteresSuma = sumaPonderadaComoString.ToCharArray();
int sumaReducida = (caracteresSuma[0] - '0') + (caracteresSuma[1] - '0');
resultadoSuma[i] = sumaReducida;
resultadoSuma[i] = sumaPonderada;
public int[] CalcularSumaAcumulada(int[] resultadoSuma)
int[] resultadoSumaConsecutiva = new int[resultadoSuma.Length - 1];
for (int i = 0; i < resultadoSuma.Length - 1; i++)
sumaAcumulada += resultadoSuma[i + 1];
resultadoSumaConsecutiva[i] = sumaAcumulada;
return resultadoSumaConsecutiva;
public int CalcularDigitoVerificador(int[] sumaAcumulada)
int residuo = sumaAcumulada[sumaAcumulada.Length - 1] % 10;