' у% - год
' m% - месяц
' dt - день (целая часть) и время дня (дробная часть)
DIM A AS LONG, В AS LONG, С AS LONG, D AS LONG, Z AS LONG
DIM aa AS LONG, E AS INTEGER, F AS DOUBLE
Z=INT(jd+.5)
F=jd+.5-Z
A=Z
IF Z>=2299161 THEN
aa=INT((Z-1867216.25#)/36524.25) A=A+l+aa-(aa\4)
END IF B=A+1524
C=INT((B-122.1)/365.25) D=INT(365.25*C) E=INT((B-D)/30.6001)
DT=B-D-INT(30.6001*E)+F
IF E<13.5 THEN m%=E-l
ELSE m%=E-13
IF m%>2.5 THEN y%=C-4716
ELSE y%=C-4715
END SUB
Программа 9_02.с
#include <stdio.h>
#include <conio.h>
void GD(double jd,int *y,int *m,double *dt);
main () (
int Y,M;
double DT,jd;
clrscr () ;
printf("\n Задайте юлианскую дату : ");
scanf("%lf",&jd);
GD(jd, &Y, &M, &DT) ;
printf("\n годl=%d месяц=%d день и время=%-15.51f",Y,M,DT);
getch();
}
/*--------------------------------------*/
void GD(double jd,int *y,int *m,double *dt)
/* Восстановление даты григорианского */
/* календаря по юлианской дате jd */
/* у - год, m - месяц */
/* dt - день (целая часть) */
/* и время дня (дробная часть) */
/**************************************/
{
long a,A,B,C,D,E, Z;
double F;
Z=jd+0.5;
F=jd+0.5-Z; A=Z;
if(Z>=2299161)
{
a=(Z-1867216.25)/36524.25;
A += l+a-a/4; }
B=A+1524;
C=(B-122.1)/365.25;
D=365.25*C; E=(B-D)/30.6001;
*dt=B-D-(int)(30.6001*E)+F;
if(E<13.5) *m=E-l;
else *m=E-13;
if(*m>2.5) *y=C-4716;
else *y=C-4715; }
Программа 9_02.pas
program jd_to_gd;
{ Преобразование юлианской даты JD в дату григорианского календаря - Y (год), М (месяц), DT (день и часть времени, прошедшую от начала суток }
uses crt; var
Y,M:integer;
DT,jd:double;
procedure GD(jd:double;
var y,m:integer; var dtrdouble);
{ Восстановление даты григорианского }
{ календаря по юлианской дате jd }
{ у - год, m - месяц }
{ dt - день (целая часть) }
( и время дня (дробная часть) }
var
aa,A,B,C,D,E,Z:longint;
F:double; begin