/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema con Calendario Perpetuo

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
pokora



Registrado: 01 Nov 2007
Mensajes: 7

MensajePublicado: 06/11/2007 4:26 pm
Título: Problema con Calendario Perpetuo

Estoy intentado hacer un pseudocódigo para calcaular el dia de la semana q fue una fecha introducida por teclado. El caso es q he conseguido elaborar 2 pseudocódigos siguiendo la informacion q he ido encontrando por Internet. Pero ambos despues de picar unas fechas alguna no concuerda con lo q deberia darme. En fin si alguien puede ayudarme, gracias.
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 311
Ubicación: Cono Sur

MensajePublicado: 06/11/2007 5:44 pm
Título:

Por cierto, en la sección de Código fuente de este mismo sitio tienes un par de "Calendarios Perpetuos" que pueden llegar a serte útiles.

Un saludo
Volver arriba
pokora



Registrado: 01 Nov 2007
Mensajes: 7

MensajePublicado: 07/11/2007 1:40 pm
Título:

Los habia visto, pero no m sirven porque mi intervalo de fechas lo supera (el mio debe servir para cualquier fecha, no puede tener limitaciones del calendario gregoriano o juliano)
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 83

MensajePublicado: 07/11/2007 8:57 pm
Título:

El problema con el cambio de calendario de juliano a gregoriano es que de un dia (supongamos martes 15) pasaron a un dia que no correspondia en la secuencia(miercoles 25 por ejemplo cuando debia seguir miercoles 16), por lo tanto creo que corresponder a esas fechas utilizando los algoritmos juliano y gregoriano no funcionaría correctamente, salvo que pudieses validar todos los dias que cambiaron(considerando que hubieron adelantos de fechas y atrasos de fechas, que unas pasaban de dia 5 a 15 y otras regresaban incluso de año- de enero a diciembre-)

Quiza por eso suelas encontrar el "calendario perpetuo gregoriano" a partir de la fecha en que se hizo el cambio de calendario.

De ahi que generalmente el "calendario perpetuo" es gregoriano (osea para atras del año 1500 y algo, no funcionaria), razon por la cual lo de "perpetuo" deja mucho que desear
_________________
Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón.
Volver arriba
pokora



Registrado: 01 Nov 2007
Mensajes: 7

MensajePublicado: 08/11/2007 3:27 pm
Título:

Lo he tenido en cuenta a la hora de buscar y calcular.

Lo curioso es q una fecha es anterior a 1582 y la otra posterior, luego tu explicacion no es el caso (no t critico, encima q m contestas faltaria mas simplemente aclaro). Aun asi gracias.
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 83

MensajePublicado: 12/11/2007 2:34 pm
Título:

¿Qué fecha(s) es(son) la(s) que quieres calcular?
_________________
Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón.
Volver arriba
pokora



Registrado: 01 Nov 2007
Mensajes: 7

MensajePublicado: 13/11/2007 1:22 pm
Título:

a partir del año 0 cualquiera.

ya sea año 701, 1642, 2165, 7416, 3674, ...
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 83

MensajePublicado: 14/11/2007 8:10 pm
Título:

A ver estuve leyendo algo sobre calendarios perpetuos basados en las fases lunares (lo cual deja de lado lo gregoriano y juliano), aparentemente por alli estaria la solucion a lo que buscas.

¿Quieres hacer un calendario como este?

http://www.cienciaseternas.com/Horoscopos/CalendarioPerpetuo.htm

Bueno si es algo asi y con eso de las lunas tendrias que leer un poquito mas, tambien encontre un codigo (en basic) que sirve de base (segun decia la paginahttp://presencias.net/indpdm.html?http://presencias.net/miscel/ht4071a.html) para crear un calendario perpetuo basado en los "efectos de la luna" (por algo se llamará Moon Effects)

Código:

10 '          MOON EFFECTS by Bradley E. Schaefer
20 DEFDBL A-Z
30 P2 = 2 * 3.14159: ' Radians in a full circle
40 INPUT "Year, month, day"; Y, M, D
50 YY = Y - INT((12 - M) / 10)
60 MM = M + 9: IF MM >= 12 THEN MM = MM - 12
70 K1 = INT(365.25 * (YY + 4712))
80 K2 = INT(30.6 * MM + .5)
90 K3 = INT(INT((YY / 100) + 49) * .75) - 38
100 J = K1 + K2 + D + 59: '  JD for dates in Julian calendar
110 IF J > 2299160# THEN J = J - K3: ' For Gregorian calendar
120 '  J is the Julian date at 12h UT on day in question
130 '
140 '  Calculate illumination (synodic) phase
150 V = (J - 2451550.1#) / 29.530588853#: GOSUB 400: IP = V
160    AG = IP * 29.53: ' Moon's age in days
170    IP = IP * P2: '    Convert phase to radians
180 '
190 '  Calculate distance from anomalistic phase
200 V = (J - 2451562.2#) / 27.55454988#: GOSUB 400: DP = V
210    DP = DP * P2: '  Convert to radians
220    DI = 60.4 - 3.3 * COS(DP) - .6 * COS(2 * IP - DP) - .5 * COS(2 * IP)
230 '
240 '  Calculate latitude from nodal (draconic) phase
250 V = (J - 2451565.2#) / 27.212220817#: GOSUB 400: NP = V
260    NP = NP * P2: ' Convert to radians
270    LA = 5.1 * SIN(NP)
280 '
290 '  Calculate longitude from sidereal motion
300 V = (J - 2451555.8#) / 27.321582241#: GOSUB 400: RP = V
310    LO = 360 * RP + 6.3 * SIN(DP) + 1.3 * SIN(2 * IP - DP) + .7 * SIN(2 * IP)
320 '
330 PRINT USING "Moon's age from new (days):   ###"; AG
340 PRINT USING "Distance (Earth radii):       ###"; DI
350 PRINT USING "Ecliptic latitude (degrees):  ###"; LA
360 PRINT USING "Ecliptic longitude (degrees): ###"; LO
370 PRINT : INPUT "Continue (y or n)"; Q$
380 IF Q$ <> "N" AND Q$ <> "n" THEN GOTO 40
390 END
400 '      Normalize values to range 0 to 1
410 V = V - INT(V): IF V < 0 THEN V = V + 1
420 RETURN
430 '
440 '    This program helps anyone who needs to know the Moon's
450 '    phase (age), distance, and position along the ecliptic on
460 '    any date within several thousand years in the past or future.
470 '    To illustrate its application, Bradley Schaefer applied it
480 '    to a number of famous events influenced by the Moon in
490 '    World War II.  His article appeared in Sky & Telescope for
500 '    April 1994, page 86.


Por aca una version de lo mismo en C++ (sujeta a posibles correcciones)
Código:

#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
{
clrscr();
int y,m,d;

int p2=2*3.14159;
cout<<"ingresa año,mes,dia:";
cin>>y>>m>>d;
int yy=y-(12-m)/10;
int mm=m+9;

if(mm>=12) mm=mm-12;

int k1=(int)(365.25*(yy+4712));
int k2=(int)(30.6*mm+0.5);
int k3=(int)((int)((yy/100)+49)*0.75)-38;
long j=k1+k2+d+59;

if (j>2299160) j=j-k3;

double v=(j-2451550.1)/29.530588853;
double ip=v;
ip=v-(int)(v);

if(ip<0) ip=ip+1;

double ag=ip*29.53;
ip=ip*p2;

v=(j-2451562.2)/27.55454988;
double dp=v;

if(dp<0) dp=dp+1;
dp=dp*p2;
double di=60.4-3.3*cos(dp)-0.6*cos(2*ip-dp)-0.5*cos(2*ip);

v=(j-2451565.2)/27212220817;
double np=v;

if(np<0) np=np+1;

np=np*p2;
double la=5.1*sin(np);

v=(j-2451555.8)/27.321582241;
double rp=v;

if(rp<0) rp=rp+1;

double lo=360*rp+6.3*sin(dp)+1.3*sin(2*ip-dp)+0.7*sin(2*ip);

cout<<ag<<endl;
cout<<di<<endl;
cout<<la<<endl;
cout<<lo<<endl;

getch();
}


Y bueno, no se que tanto te pueda servir porque aparentemente el cambio es radical, de trabajar con lo que conocemos del calendario gregoriano a trabajar con fases lunares parece que hay cierta diferencia
_________________
Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón.
Volver arriba
pokora



Registrado: 01 Nov 2007
Mensajes: 7

MensajePublicado: 16/11/2007 2:16 pm
Título:

y tanto q cambia, jejeje, weno estoy estudiando lo q m has puesto y tendre q rehacer el codigo d nuevo. Os contare las novedades en cuanto consiga tener algo interesante.

Ah y Muchas Gracias !!!
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 83

MensajePublicado: 16/11/2007 9:13 pm
Título:

Se me hizo muy interesante el planteamiento del problema dado que al, igual que muchos, el calendario "perpetuo" que conocia era gregoriano, asi que mas bien, Gracias a ti, por hacerme conocer de una nueva propuesta de calendario, esta vez si "perpetuo".

Saludos, y espero que consigas realizar tu calendario.
_________________
Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón.
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com