Algoritmo

Validar Cédula Ecuatoriana (Algoritmo)

Para validar una cédula ecuatoriana. 

  • El décimo carácter numérico es el resultante de un cálculo y el dígito verificador
  • Se trabaja con los 9 primeros caracteres numéricos de la cédula.
  • Cada dígito de posición par (teniendo en cuenta que el primer carácter numérico esta en la posición 0) se lo multiplica por dos, y, si este resultado es mayor que nueve, se resta nueve.
  • Cada dígito de posición impar (teniendo en cuenta que el primer carácter numérico esta en la posición 0) se lo multiplica por uno.
  • Se suman todos los resultados de las multiplicaciones realizadas anteriormente.
  • El resultado de la suma anterior se resta de la decena inmediata superior.
  • El resultado anterior debe ser el décimo dígito.
  • Si la resta final resulta 10, el décimo dígito es cero.

EJEMPLO

0   7   0   4   1   6   3   5   7   5
*   *   *   *   *   *   *   *   *   
2   1   2   1   2   1   2   1   2      se multiplica caracteres pares * 2 y si es > 9 se resta nueve, e impares * 1 
_____________________________________
0   7   0   4   2   6   6   5   5   
|_______________________________|      se suma el resultado de las multiplicaciones, en este caso es = 35
               35                      Este resultado se resta de la decena inmediata superior, es decir 40 - 35 = 5, 
                                       y este resultado debe ser = al ultimo carácter de la cadena, en este caso 5. 
                                       Por lo que 5=5, comprobando que la cadena es válida.

Implementación del algoritmo para validar cédula ecuatoriana en C#

public static void validar(string cad)
{
    try
    {
        int total = 0;
        int longitud = cad.Length;
        int longcheck = longitud - 1;

        if (cad != "" && longitud == 10)
        {
            for (int i = 0; i < longcheck; i++)
            {
                if (i % 2 == 0)
                {
                    int aux = int.Parse(cad[i].ToString()) * 2;
                    if (aux > 9) aux -= 9;
                    total += aux;
                }
                else
                {
                    total += int.Parse(cad[i].ToString());
                }
            }

            // la parte más compleja: si es un múltiplo de 10 será 0, sino, 10-el módulo
            total = (total % 10 != 0) ? 10 - (total % 10) : 0;

            if (int.Parse(cad[longitud - 1].ToString()) == total)
            {
                Console.WriteLine("Cadena Válida");
            }
            else
            {
                Console.WriteLine("Cadena Inválida");
            }
        }
    }
    catch (FormatException)
    {
        Console.WriteLine("la cédula debe contener solo números dígitos");
        //throw;
    }
            
}

Extraído y convertido a C# desde el post original en mi blog anterior

Entradas creadas 12

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Publicaciones relacionadas

Comienza escribiendo tu búsqueda y pulsa enter para buscar. Presiona ESC para cancelar.

Volver arriba