Introducción a la Programación
Trimestre 2011 Invierno --- Tarea 2 versión A

Día de la semana

Uno de los problemas que se tiene que resolver al escribir un programa que trabaje con fechas es el de decir qué día de la semana corresponde con una cierta fecha dada. Por ejemplo, el 23 de mayo de 2005 es lunes, el día anterior domingo y el siguiente martes. Dada una fecha como tres números enteros a, m y d (donde a es el año, m el mes y d el día), el día se la semana se puede encontrar con el siguiente algoritmo:
  1. Si m > 2, entonces vaya al paso 3.
  2. Haga m = m + 10 y a = a - 1 y vaya al paso 4.
  3. Haga m = m - 2.
  4. Haga c = a / 100 y e = a mod 100.
  5. Haga b = (13m - 1)/5 + e/4 + c/4.
  6. Haga f = (b + e + d - 2c) mod 7.
Donde todas las divisiones son enteras, mod es el residuo de la división y f = 0 significa domingo, f = 1 significa lunes, etc. Dada una fecha, deberás determinar que día de la semana fue el día anterior (f1), ese día (f2) y el día siguiente (f3).

Especificación

La entrada consiste de tres números enteros a, m y d en ese orden, separados por espacios y donde 0 <= a <= 10000, 1 <= m <= 12 y 1 <= d <= 31, además de que a, m y d representan una fecha válida. La salida consiste de tres números enteros f1, f2 y f3 en ese orden y separados por un espacio. El nombre de su programa deberá ser diasemNN.c, donde NN es el número de lista que  les fue asignado.

Notas: (a) Su programa no deberá leer ni escribir nada además de los datos mencionados anteriormente. (b) Su programa no deberá usar nada que no hayamos visto en clase. (c) Para compilar su programa en UNIX usen la instrucción gcc diasemNN.c -o diasem y para probarlo usen la instrucción ./diasem y tecleen la entrada deseada seguida de un enter.

Ejemplo

ENTRADA: 2005 5 23
SALIDA:  0 1 2

Si quieres hacer más ejemplos puedes usar esta página de prueba.