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.
- Sea B = A/100 + 1
- Sea C = 3B/4 - 12
- Sea E = (A mod 19) + 1
- Sea F = (8B + 5)/25 - (5 + C)
- Sea G = 5A/4 - (C + 10)
- Sea H = (11E + 20 + F) mod 30
- Si H no vale 25 entonces
ir al paso 9
- Si E es mayor que 11
entonces sumarle 1 a H
- Si H vale 24 entonces
sumarle 1 a H
- Sea I = 44 - H
- Si I es menor que 21
entonces sumarle 30 a I
- 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