| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
pokora
Registrado: 01 Nov 2007 Mensajes: 7
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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
| Publicado: 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 | |
 |
|
|