Introducción a la Programación
Trimestre 2005 Primavera --- Tarea 2

Martes 24 de mayo de 2005 a las 22:00 hrs

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 equipo que les fue asignado. Los archivos diasemNN.o y diasemNN.exe no deben ser entregados. 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