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:
- Si m > 2, entonces
vaya al paso 3.
- Haga m = m + 10 y a = a
- 1 y vaya al paso 4.
- Haga m = m - 2.
- Haga c = a / 100 y e = a
mod 100.
- Haga b = (13m - 1)/5 + e/4 + c/4.
- 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