Publi

  • Algoritmos: Validar un DNI en C

    En España, para identificar de forma única a cada ciudadano se utiliza el número del Documento Nacional de Identidad (DNI). Como es costumbre, en muchos datos numéricos, como este, un número de cuenta corriente, códigos ISBN, etc existe un algoritmo de verificación que comprueba que el número es válido. En este caso, la comprobación se realiza con la letra que acompaña el número.

    El algoritmo es sencillo, puede que a la hora de implementarlo no nos acordemos del orden de las letras (para eso lo pongo, y podemos hacer Copia y Pega rápidamente).… Leer artículo completo

  • Algoritmos: Probar la existencia de un fichero con open() en C

    Estos días a varios de mis alumnos les ha surgido la necesidad de probar la existencia de un archivo haciendo la llamada al sistema open(). Es bastante sencillo, sólo hay que probar si éste se ha podido abrir (como lectura, por ejemplo, para no tocar el fichero en la medida de lo posible).
    Una vez se abre el fichero pueden ocurrir varias cosas:

    • que la llamada a open() no devuelva error.
    Leer artículo completo
  • Algoritmos: Factorial y cálculo del seno por la serie de MacLaurin (Taylor alrededor de 0) en C

    Algo más matemático vuelvo cuando propongo lo siguiente. Vamos a calcular un seno con la serie de MacLaurin. Ésta es la fórmula, extraída de Wikipedia.sin_maclaurin

    Y este el algoritmo en C:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #define PI 3.141592653588

    unsigned factorial(int n)
    {
      if (n<1)
        return 1;
     
      return n*factorial(n-1);
    }

    double senoTaylor(double n)
    {
      double t=0;
      int i;

      short signo=(n>=0);
      n=fabs(n);            /* Calculamos el valor absoluto */

      while (n>PI)      /* Reducimos el ángulo, de dos en dos cuadrantes*/
        {
          n-=PI;            /* 1 vuelta = 2PI radianes */
          signo=!
    Leer artículo completo
  • Algoritmos: Año bisiesto y validación de fechas en C

    Para inaugurar la nueva sección de Algoritmos de este blog, empezaré presentando una función para calcular años bisiestos (lo podemos encontrar en Wikipedia en bastantes más lenguajes, pero, ¿por qué aquí no?

    1
    2
    3
    4
    function bisiesto(int year)
    {
      return (a%4==0) && ( (a%100!=0) || (a%400==0) );
    }

    Es decir, cada 4 años hay un año bisiesto, no cuando el año es múltiplo de 100, aunque sí cuando es múltiplo de 400.… Leer artículo completo