Introducción a la Programación
Trimestre 2006 Invierno --- Tarea 2

Miércoles 15 de febrero de 2006 a las 22:00 hrs

Un algoritmo de Gauss poco conocido

La Pascua cae en el primer domingo que siga a la primera luna llena que ocurra el 21 de marzo o después. El siguiente algoritmo debido a Gauss calculará, dado un año A >= 1583, un número que representa la fecha de la Pascua de la siguiente forma: Si J <= 31 entonces la Pascua será el J de marzo, en otro caso la Pascua será el J - 31 de abril.
  1. Sea B = A/100 + 1
  2. Sea C = 3B/4 - 12
  3. Sea E = (A mod 19) + 1
  4. Sea F = (8B + 5)/25 - (5 + C)
  5. Sea G = 5A/4 - (C + 10)
  6. Sea H = (11E + 20 + F) mod 30
  7. Si H no vale 25 entonces ir al paso 9
  8. Si E es mayor que 11 entonces sumarle 1 a H
  9. Si H vale 24 entonces sumarle 1 a H
  10. Sea I = 44 - H
  11. Si I es menor que 21 entonces sumarle 30 a I
  12. Sea J = I + 7 - [(G + I) mod 7]
(Todas las divisiones son enteras y mod es el residuo de la división.) Dado un año A, deberás calcular el día D y el mes M en el que cae la Pascua en el año A.

Especificación

La entrada consiste de un número entero A que tendrá un valor entre 1583 y 9999. La salida consiste de dos números enteros D y M en ese orden y separados por un espacio (M = 3 significa marzo y M = 4 significa abril). El nombre de su programa deberá ser pascuaNN.c, donde NN es el número de equipo que les fue asignado. Los archivos pascuaNN.o y pascuaNN.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 pascuaNN.c -o pascua y para probarlo usen la instrucción ./pascua y tecleen la entrada deseada seguida de un enter.

Ejemplo

ENTRADA: 2006
SALIDA:  16 4