Составить функцию dif_time, вычисляющую интервал
Z:=trunc(jd+0.5);
F:=jd+0.5-Z;
A:=Z;
if Z>=2299161 then begin
aa:=trunc((Z-1867216.25)/36524.25);
A:=A+l+aa-(aa div 4);
end;
B:=A+1524;
C:=trunc( (B-122.D/365.25) ;
D:=trunc(365.25*C);
E:=trunc((B-D)/30.6001);
dt:=B-D-trunc(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;
begin
clrscr;
write('Задайте юлианскую дату : ');
readln(jd);
GD(jd,Y,M,DT);
writeln('год = ',Y:4,' месяц = ',M:2,' день и время = ',DT:4:1);
readln; end.
Задание 9.03. Интервал времени между двумя датами
Составить функцию dif_time, вычисляющую интервал между двумя датами григорианского календаря.
Совет 1 (общий)
Преобразуйте даты григорианского календаря и найдите разницу между соответствующими юлианскими датами. Чтобы не выяснять, какая из дат является предшествующей, можно найти модуль разности.
Программа 9_03.bas
DECLARE FUNCTION JD! (Y%, M%, DT!)
DECLARE FUNCTION DifTime! (Yl%, Ml%, DTI!, Y2%, M2%, DT2!)
REM Определение интервала времени между двумя датами
REM григорианского календаря : (Y1,M1,DT1) и (Y2,M2,DT2)
CLS
INPUT "Задайте год григорианского календаря : ",Y1%
INPUT "Задайте месяц григорианского календаря : ",М1%
INPUT "Задайте день и время : ",DT1
INPUT "Задайте год григорианского календаря : ",Y2%
INPUT "Задайте месяц григорианского календаря : ",М2%
INPUT "Задайте день и время : ",DT2
PRINT "Интервал =",DifTime(Y1%,M1%,DTI,Y2%,M2%,DT2)
END
FUNCTION DifTime (Y1%,M1%,DTI,Y2%,M2%,DT2)
' Определение интервала времени между
' двумя григорианскими датами
' Y1,Y2 - годы М1,М2 - месяцы
' целые части DTI, DT2 - дни
' дробные части DTI, DT2 - время дня
jdl=JD(Y1%,M1%,DT1)
jd2=JD(Y2%,M2%,DT2)
DifTime=ABS(jdl-jd2) END FUNCTION
FUNCTION JD(Y%,M%,DT)
DIM a AS INTEGER, b AS INTEGER, mm AS INTEGER, yy AS INTEGER
DIM с AS LONG
b=0
yy=Y%
mm=M%
IF M%<3 THEN yy=yy-l: mm=mm+12
Содержание Назад Вперед